我正在尝试通过创建自己的Html帮助程序方法在我的项目中自动构建下拉列表,该方法采用“下拉组”代码并自动构建Html。但是,它需要在完全支持模型的同时执行此操作。
我的结束代码需要看起来像这样。
<%: Html.CodeList(m => m.state, 121) %>
...其中“121”是从数据库返回键/值对字典的代码组。
到目前为止,这是我的Html帮助程序方法。
public static MvcHtmlString CodeList<T, TProp>(this HtmlHelper<T> html, Expression<Func<T, TProp>> expr, int category)
{
Dictionary<int, string> codeList = CodeManager.GetCodeList(category); //returns dictionary of key/values for the dropdown
return html.DropDownListFor(expr, codeList, new Object()); //this line here is the problem
}
我无法想清楚究竟如何交给DropDownListFor方法。我假设我确实返回了html.DropDownListFor(),但我遗漏了一些明显的东西。有什么帮助吗?
答案 0 :(得分:1)
你去了:
public static MvcHtmlString CodeList<T, TProp>(
this HtmlHelper<T> html,
Expression<Func<T, TProp>> expr,
int category
)
{
var codeList = CodeManager.GetCodeList(category);
var selectList = new SelectList(
codeList.Select(item => new SelectListItem {
Value = item.Key.ToString(),
Text = item.Value
}),
"Value",
"Text"
);
return html.DropDownListFor(expr, selectList);
}
备注:CodeManager.GetCodeList
等静态方法在单独测试组件方面非常糟糕。