在ASP.NET MVC 3视图中,如何为列表字段生成编辑器?

时间:2011-09-01 08:44:40

标签: html asp.net-mvc asp.net-mvc-3

我在ASP.NET MVC 3视图中创建一个表单,其中一个字段用于指定一个int列表(对应于已编辑模型中的List<int>)。如何在视图中生成此编辑器字段?我假设我可以使用MVC 3助手。

2 个答案:

答案 0 :(得分:0)

如果需要下拉列表,可以使用HTML.DropDownList帮助程序方法。这是您想要的,还是需要将List显示为有序/无序HTML列表?

修改

您可以创建自己的HTML帮助程序功能。假设您使用Razor,您可以按照以下步骤进行操作

1.)在App_Code目录中创建一个新的.cshtml文件并根据需要命名(例如HTMLHelpers.cshtml)

2.)在文件

中写下以下内容
@helper OrderedList(List<int> list) {
    <ul>
        @foreach (var item in list)
        {
            <li>@item</li>
        }
    </ul>
}

3.)现在在您的视图中,您可以调用您的新功能。例如写

@HTMLHelpers.OrderedList(Model)

第二次编辑

您还可以使用Javascript来实现该功能。来自Steven Sanderson的Knockout.js是一个很棒的库,可以帮助您将值数据绑定到html元素。

来自knockout.js文档的

This sample与您的需求类似。

您还可以查看Steven Sanderson的this blog post,其中解释了如何将Knockout.js与可变长度列表一起使用,以及如何将列表数据提交回服务器。

答案 1 :(得分:0)

Phil Haack's blog post讨论了使用模型绑定到列表的各个方面:控制器代码,视图代码,复杂和原始类型,字典绑定。从该博客文章的第一段开始,MVC内置模型绑定器绑定List,只是将相同命名查询字符串(或发布时的表单)参数传递给控制器​​。实施例

<form method="get">
   <input type="checkbox" name="ints" value="1" />
   <input type="checkbox" name="ints" value="4" />
   <input type="checkbox" name="ints" value="2" />
   <input type="checkbox" name="ints" value="8" />
   <input type="submit" />
</form>

这将正确绑定到

public ActionResult UpdateInts(List<int> ints) {

  return View(ints);
}

请参阅该博客文章了解完整信息