我对 MVC 还很陌生,想知道在我的编辑器模板中填充下拉列表的最佳方式?
我正在构建一个具有很多下拉列表的应用程序,并且这些下拉列表的数据是非常静态的。目前我将它们全部放在数据库中的一个表中,然后将它们加载到会话中。
这是一个例子:
我的观点:
@{
var widgettypes = Business.MySession.Current.WidgetTypes.ToSelectList(d => d.TypeName,
d => d.WidgetTypeID.ToString(),
" - Select - ");
}
<div class="editor-label">
@Html.LabelFor(model => model.WidgetTypeID)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.WidgetTypeID, @widgettypes)
@Html.ValidationMessageFor(model => model.WidgetTypeID)
</div>
下拉助手:
public static List<SelectListItem> ToSelectList<T>(
this IEnumerable<T> enumerable,
Func<T, string> text,
Func<T, string> value,
string defaultOption)
{
var items = enumerable.Select(f => new SelectListItem()
{
Text = text(f),
Value = value(f)
}).ToList();
items.Insert(0, new SelectListItem()
{
Text = defaultOption,
Value = "-1"
});
return items;
}
我在 SO 上看到了很多示例,这些示例显示了在视图中静态创建选择列表。
最佳实践是从.net 代码中的静态枚举的视图中创建它们,还是最好按照我现在这样做的方式进行?或者它只是无关紧要?
我只想知道我应该做什么,而不是什么才有效。