2012-05-12 2 views
1

У меня есть действие контроллера обновления, которое вызывается при отправке формы. В форме есть переключатель, который управляет видимостью выпадающего поля Если выпадающее поле отображается, и я публикую форму, база данных обновляется отлично, а ModelState действительна.Почему я получаю ModelState.IsValid = false?

Когда выпадающее поле скрыто и я отправляю форму, он публикует и обновляет базу данных. Но ModelState.IsValid = false, а выпадающее значение считается отсутствующим.

Как исправить эту проблему?

[HttpPost] 
public ActionResult Update(ResponseModel model) 
{ 
    //ModelState.IsValid = false when dropdown field hidden 

    //validate form fields 
    //update database 

    //if we are here, then db update successful 
    AjaxResponse.AddJsonItem("msg", "Success"); 
    return Result(); 
} 
+0

общественный класс ResponseModel { public int Limit {get; задавать; } } – kheya

ответ

2

Это может быть, что ваш ResponseModel имеет свойство аннотированное с некоторой аннотацией данных, например, [требуется], и когда вы снимите ваше радио окна, свойство не получает значение.

Опубликуйте свою модель и опубликуйте значения, которые вы получаете, когда состояние недействительно (путем проверки в отладчике).


Поскольку у вас есть только одно свойство и оно целое. Состояние модели недопустимо, поскольку целое число не может иметь нулевое значение. Когда вы делаете это скрытым, модель не имеет значения для свойства int. Либо замените раскрывающийся список на скрытое поле на радиокамере, либо сделайте его int с нулевым значением.

+0

Я уже проверил это. public class ResponseModel {public int Limit {get; задавать; }} – kheya

+0

Большой улов Хасан. Исправить было легко. Просто добавлено значение для выбранного по умолчанию значения в раскрывающемся списке. – kheya

Смежные вопросы