【发布时间】:2015-07-10 14:45:12
【问题描述】:
我正在开发一个 MVC 应用程序,其中 Model 类 Item 有一个名为 AvailableColours 的 List<Colour> 作为属性。
AvailableColours 是Colour 类的用户定义子集。我想在复选框列表中显示所有Colour 实例,并且在提交时,AvailableColours 是一个包含选中的List<Colour> 类的List<Colour>。
在 MVC 中执行此操作的最佳方法是什么?
编辑:我的代码到目前为止,虽然我觉得这不是最符合 MVC 的方式!
型号
public class Item
{
public int ID { get; set; }
public List<Colour> AvailableColours { get; set; }
}
查看
@model MyNamespace.Models.Item
@using MyNamespace.Models;
@{
ViewBag.Title = "Create";
var allColours = new List<Colour>(); //retrieved from database, but omitted for simplicity
}
<h2>Create New Item</h2>
@using (Html.BeginForm("Create", "Item", FormMethod.Post))
{
<div>
@Html.LabelFor(model => model.AvailableColours)
@foreach (var colour in allColours)
{
<input type="checkbox" name="colours" value="@colour.Description" />
}
</div>
<input type="submit" value="Submit" />
}
控制器
[HttpPost]
public ActionResult Create(Item item, string[] colours)
{
try
{
foreach (var colour in colours)
{
item.AvailableColours.Add(GetColour(colour));//retrieves from database
return RedirectToAction("Index");
}
}
catch
{
return View();
}
}
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor