我想从我的View中删除if语句,但是我遇到了Html.DropDownList等预定义控件的问题。
例如,我有一个DropDownList,在某些情况下包含空选择(换句话说......可能不选择某些东西),其他情况是没有空选择。
<% if (Model.IsCreateEmptySelectionSet)
{ %>
<%= Html.DropDownList("InternalVariableTypeList", Model.InternalType, "-- select internal variable type --")%>
<% } %>
<% else
{ %>
<%= Html.DropDownList("InternalVariableTypeList", Model.InternalType)%>
<% } %>
所以,我想创建一个可以创建正确DropDownList的帮助器,但是当我创建自己的帮助器时,我无法访问Html.DropDownList。它是如何以正确的方式使用的?
答案 0 :(得分:2)
可以使用Html帮助程序清理标记汤,并使代码更易于测试:
public static class HtmlExtensions
{
public static MvcHtmlString CustomDropDown<TModel>(this HtmlHelper<TModel> htmlHelper, IEnumerable<SelectListItem> selectList, bool isCreateEmptySelectionSet)
{
if (isCreateEmptySelectionSet)
{
return htmlHelper.DropDownList("InternalVariableTypeList", selectList, "-- select internal variable type --");
}
return htmlHelper.DropDownList("InternalVariableTypeList", selectList);
}
}
并像这样使用:
<%= Html.CustomDropDownList(
"InternalVariableTypeList",
Model.InternalType,
Model.IsCreateEmptySelectionSet)
%>
备注:CustomDropDownList
是一个非常糟糕的名字,为你的场景选择一个更适应的名称。