我在ASP.NET MVC 3视图中创建一个表单,其中一个字段用于指定一个int列表(对应于已编辑模型中的List<int>
)。如何在视图中生成此编辑器字段?我假设我可以使用MVC 3助手。
答案 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);
}
请参阅该博客文章了解完整信息