Проверка пустого выпадающего списка в asp.net mvc - PullRequest
1 голос
/ 12 декабря 2010

У меня есть страница с 2 формами. У одного из них есть выпадающий список:

<form ...>

<%: Html.DropDownListFor(x => Model.NewForm.FormId, Model.Forms)%>

<%: Html.ValidationMessageFor(x => Model.NewForm.FormId, "*")%>

<input type="submit" value="Add" />
</form>

Свойство NewForm модели:

public class AddFormViewModel
{
    [Required]
    [DisplayName("Form Id:")]
    public int? FormId { get; set; }
}

Я заметил, что когда раскрывающийся список пуст, аргумент 'form' всегда равен нулю, а ModelState всегда действителен.

[HttpPost]
public ActionResult AddForm([Bind(Prefix="NewForm")]AddFormViewModel form)
{
    if (ModelState.IsValid)
    {
      ... save
    }
    else
    {
        ... show validation error
    }

    return ...
}

Когда раскрывающийся список не пуст, все работает, как ожидалось, «form» не является нулевым.

Значение раскрывающегося списка не отправляется, когда оно пустое, это поведение по умолчанию, но в любом случае, как сделать проверку работоспособной?

Некоторые идеи:

1) Я могу добавить свойство для просмотра модели, которое будет скрытым вводом на странице только для того, чтобы механизм связывания модели работал;

2) Пользовательская модель переплета

Какие у вас идеи?

1 Ответ

0 голосов
/ 26 февраля 2011

Как насчет

[HttpPost]
public ActionResult AddForm(AddFormViewModel form)
{
    if (form!= null && ModelState.IsValid)
    {
      ... save
    }
    else
    {
        ... show validation error
    }

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