Как удалить ранее сохраненные сообщения из ModelState в asp.net mvc3

У меня есть вопрос о состоянии модели в asp.net mvc3, у меня есть контроллер предположим Home и действие в нем submitform. теперь в первый раз, когда я отправляю свою форму в это действие, и пользователь ввел что-то неправильно, я вернул ошибку, используя состояние модели

ModelState.AddModelError("", "Your entered date is wrong .");

Теперь, когда пользователь снова отправляет форму, на этот раз предположим, что дата верна, но на этот раз он ввел неправильное имя, теперь, когда я возвращаю ошибку на этом шаге

ModelState.AddModelError("", "name should be at least 4 character long .");

но теперь, когда я возвращаю это, я вижу name should be at least 4 character long ., а также вижу Your entered date is wrong., в чем проблема?

ниже мой полный код

   [Authorize]
[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class HomeController : Controller
{
       public ActionResult Formsubmit(mymodel RModel)
       {
          if(RModel.date != "2/2/2012")
           {
               ModelState.AddModelError("", "Your entered date is wrong .");
           }
           if(RModel.name.cout() < 4)
           {
               ModelState.AddModelError("", "name should be at least 4 character long .");

           }

           return View(RModel);
       } 
}

person Ahsan    schedule 08.05.2012    source источник
comment
Пожалуйста, покажите свой полный код метода контроллера/действия.   -  person Kyle Trauberman    schedule 08.05.2012
comment
Фиксировано ли значение свойства RModel.date на 02.02.2012? Если значение RModel.date равно null или что-то еще, оно должно добавить ошибку "дата неверна...".   -  person Kibria    schedule 08.05.2012


Ответы (1)


Используйте именованные сообщения об ошибках. Это дает вам возможность очистить их:

ModelState.AddModelError("WrongData", "Your entered date is wrong .");

позже

ModelState.AddModelError("WrongData", ""); //clear error message
ModelState.AddModelError("WrongLenth", "name should be at least 4 character long ."); 

в качестве бонуса, если вы по какой-то причине решили показать какое-либо сообщение об ошибке 2 раза, вы также можете сделать это:

ModelState.AddModelError("WrongData", "Your entered date is wrong .");
ModelState.AddModelError("WrongData2", "Your entered date is wrong .");
person VMykyt    schedule 08.05.2012
comment
но я ранее ввел одну ошибку без имени, так что теперь я могу удалить это? - person Ahsan; 08.05.2012