首页 新闻 搜索 专区 学院

MVC4中 新增页面

0
悬赏园豆:50 [已解决问题] 解决于 2013-09-10 17:08
C# code?
1
2
3
4
5
6
7
8
9
10
11
public class TableEntity
    {
        public string TableName { getset; }
        public string TableType { getset; }
        public List<Colmun> Cols { getset; }
    }
public class Colmun
    {
        public string ColumnName { getset; }
        public string ColumnValue { getset; }
    }


view 中

XML/HTML code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
 
    <fieldset>
        <legend>TableEntity</legend>
 
        <div class="editor-label">
            @Html.LabelFor(model => model.TableName)
        </div>
        <div class="editor-field"> //这是TableName 的输入框
            @Html.EditorFor(model => model.TableName)
            @Html.ValidationMessageFor(model => model.TableName)
        </div>
 
        <div class="editor-label">
            @Html.LabelFor(model => model.TableType)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.TableType)//这是TableType 类型的输入框
            @Html.ValidationMessageFor(model => model.TableType)
        </div>
 
       <div>
          1.这里是 Cols 的输入框,要显示为“ 列名输入textbox, 列的值输入textbox” 列名和列值为1对1 
        请问这里应该怎么写?
          2.如果这里 Cols 的列为动态添加的,用户点一下添加一列,这一列 能映射到model 中,这样提交后就可以直接在后台取到了。
 
    </div>
 
        <p>
            <input type="submit" value="Create" /> //这里点击后 执行controller下的程序
        </p>
    </fieldset>
}



controller:

C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[HttpPost]
        public ActionResult Create(TableEntity table)
    {
        try
            {
                // TODO: Add insert logic here
        //这里可以接收到 view 中 动态生成列的集合 table.Cols
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
    }
气质优雅的猪的主页 气质优雅的猪 | 菜鸟二级 | 园豆:283
提问于:2013-09-10 14:47
< >
分享
最佳答案
0

如果数量是确定的话,可以如下:

@for(int i = 0; i <  Model.Cols.Count;i++)
{
    @Html.EditorFor(m => m.Cols[i].TableType)
}
收获园豆:20
sinhbv | 老鸟四级 |园豆:2579 | 2013-09-10 15:23

数量不确定,根据用户的动态添加来确定数量

气质优雅的猪 | 园豆:283 (菜鸟二级) | 2013-09-10 15:38

@气质优雅的猪: 那样的话,需要通过js来完成。

sinhbv | 园豆:2579 (老鸟四级) | 2013-09-10 15:43

@sinhbv: 

气质优雅的猪 | 园豆:283 (菜鸟二级) | 2013-09-10 15:55

@气质优雅的猪: 

<input name="table.Cols[0].Name" type="text" />

<input name="table.Cols[0].Value" type="text" />

类似上面这样,要从0开始,连续向下,中间不能中断,在添加行时,name必须以之一致。

或者采用别一种方法,自定义一个ModelBuilder,在构建Model时,实现自定义

sinhbv | 园豆:2579 (老鸟四级) | 2013-09-10 16:25
其他回答(2)
0

<input name="模型中的属性,TableEntity "> 提交你可以使用from ,也可以使用ajaxFrom。提交到”控制器/方法“。

收获园豆:20
开源控Meteor(OSMeteor) | 园豆:221 (菜鸟二级) | 2013-09-10 15:21

谢谢 您的回答。

支持(0) 反对(0) 气质优雅的猪 | 园豆:283 (菜鸟二级) | 2013-09-10 15:56
0

首先只有强类型实体,才能再后台首先自动属性赋值;

@foreach(var m in Model.Cols)
{
   <textarea name='cols'>@m.Value</textarea>
}

后台可以用List<string> cols(不能改),获取这一堆数据。

收获园豆:10
幻天芒 | 园豆:36594 (高人七级) | 2013-09-10 16:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册