Очистка тега супа от просмотра в ASP.Net MVC - PullRequest
0 голосов
/ 16 апреля 2010

Я хочу удалить операторы if из моего View, но у меня проблемы с предопределенными элементами управления, такими как 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 Ответ

2 голосов
/ 16 апреля 2010

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 - это очень плохо выбранное имя, выберите более адаптированное для вашего сценария.

...