我的控制器中有一个create方法,这会打开一个视图。在视图上,用户可以输入数据来填充模型。其中一些数据来自选择列表。这些选择列表从数据库中填充。
我想知道的是我应该:
a)获取控制器中选择列表的数据,填充如下字段:
public IEnumerable<SelectListItem> Statuses { get { return GetStatusType(); } }
将状态传递给模型,然后执行for()循环遍历状态并创建选择列表和选项HTML
b)在控制器和视图中什么也不做,模型中有以下内容:
<select id="Q_StatusID" name="Q.StatusID">@Html.Raw(
SelectHelper.Status(false, @Model.PageMeta.StatusID))</select>
SelectHelper是C#代码,它获取所有选择列表和选项HTML。
c)更好的方法:
答案 0 :(得分:0)
我会选择第一个。像这样的事情
辅助方法
public List<SelectListItem> getAllSelectList(List<Items> lists)
{
List<SelectListItem> selectListItems = new List<SelectListItem>();
foreach (Term term in lists)
{
selectListItems.Add(new SelectListItem() { Text = term.yourselectfield, Value = term.your value });
}
return selectListItems;
}
控制器上的
//假设您GetStatusType()
方法将返回对象列表
ViewData.selectlist=getAllSelectList(GetStatusType());
在您的视图中,如果您使用的是Razor
@Html.DropDownList("selectlist", null, "Choose")
或
<%: Html.DropDownList("selectlist", null, "Choose") %>
答案 1 :(得分:0)
答案 2 :(得分:0)
我会创建一个视图模型,它具有IEnumerable&lt;状态&gt;属性。然后在您的视图中显示选择元素:
@Html.DropDownListFor(model => model.PageMeta.StatusID, new SelectList(Model.Statuses, "Id", "Name"), "Some default which has no value")
其中Id和Name设置为Statuses模型中的相应属性。