Изменить поведение MVC по умолчанию для логических типов - PullRequest
3 голосов
/ 01 декабря 2011

Я определил этот editorTemplate для изменения поведения логического типа, моя проблема в том, что когда тип обнуляем значение, которое исходит от модели.

Например, если значение true, я хочу, чтобы раскрывающийся список был выбран со значением SI, а false - с NO. Теперь я знаю, что могу получить значение модели следующим образом Model.Value, но я не знаю, как перейти к списку выбора в зависимости от модели. Вот мой редактор шаблонов

@model Nullable<bool>

@{
    var listItems = new[]{
        new SelectListItem { Value = "null", Text = "Sin Valor" },
        new SelectListItem { Value = "true", Text = "Si" },
        new SelectListItem { Value = "false", Text = "No"}
    };
}

@if (ViewData.ModelMetadata.IsNullableValueType)
{

    @Html.DropDownList("", listItems)
}
else
{
    @Html.CheckBox("", ViewData.Model.Value)
}

1 Ответ

5 голосов
/ 01 декабря 2011

Вы можете установить это на SelectListItem: http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlistitem%28v=VS.100%29.aspx

@model Nullable<bool>

@{
    var listItems = new[]{
        new SelectListItem { Value = "null", Text = "Sin Valor", Selected = !Model.HasValue },
        new SelectListItem { Value = "true", Text = "Si", Selected = Model.HasValue && Model.Value },
        new SelectListItem { Value = "false", Text = "No", Selected = Model.HasValue && !Model.Value}
    };
}

@if (ViewData.ModelMetadata.IsNullableValueType)
{

    @Html.DropDownList("", listItems)
}
else
{
    @Html.CheckBox("", ViewData.Model.Value)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...