Проверка MVC для Dropdownlist - PullRequest
2 голосов
/ 06 июля 2011

Привет У меня есть приложение MVC с раскрывающимся списком в представлении:

<div class="editor-label">
            @Html.LabelFor(model => model.CompanyId)
        </div>
        <div class="editor-field">
            @Html.DropDownList("CompanyId", "--- Select ---")
            @Html.ValidationMessageFor(model => model.CompanyId)
        </div>

В модели у меня есть:

[Required(ErrorMessage = "Company is a required field.")]
        [Display(Name = "Company:")]
        public int CompanyId{ get; set; }

В контроллере для метода Create Get у меня есть:

ViewBag.CompanyId= new SelectList(_repository.GetAll<Company>(), "Id", "Name");

Итак, изначально редактор представлял собой стандартное текстовое поле и проверка работала нормально.Теперь я изменил его в раскрывающемся списке все работает отлично, за исключением проверки.Поэтому в HTTP POST Create, если вы ничего не выбираете из выпадающего списка, ModelState.IsValid имеет значение false, что является правильным.

Проблема в выпадающем списке: сообщения проверки больше не отображаются для этого поля, как они это сделаликогда это было текстовое поле.Я понимаю, что у меня, вероятно, неверное сообщение ValidationMessage.

Может кто-нибудь подсказать, как заставить это работать?

1 Ответ

2 голосов
/ 06 июля 2011

Есть ли конкретная причина, по которой вы используете Html.DropDownList, а не Html.DropDownListFor?

Позвольте мне привести вам пример того, как я делал это в прошлом, это может или не может вам помочь.

@Html.DropDownListFor(model => model.Vendor.State, new SelectList(Model.StatesList, "State1", "State1"), new { @class = "textboxSmall" })<br />
@Html.ValidationMessageFor(model => model.Vendor.State)

Список состояний - это коллекция свойств в моей модели представления, которую я использую для заполнения раскрывающегося списка.

public List<State> StatesList
        {
            get
            {
                StatesCollection st = new StatesCollection();
                st.LoadStatesList();

                return st.StatesList;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...