从ASP.Net MVC中的View中清除标签汤

时间:2010-04-16 11:15:40

标签: asp.net-mvc view html-helper

我想从我的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。它是如何以正确的方式使用的?

1 个答案:

答案 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是一个非常糟糕的名字,为你的场景选择一个更适应的名称。