如何从asp.net mvc3中的ModelState中删除以前保存的消息

时间:2012-05-08 06:28:31

标签: c# asp.net-mvc asp.net-mvc-3 modelstate

我有一个关于asp.net mvc3中的modelstate的问题,我有一个控制器假设Home并且其中有一个动作submitform。现在我第一次将表单提交给此操作并且用户输入了一些错误我使用modelstate

返回错误
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);
       } 
}

2 个答案:

答案 0 :(得分:5)

Modelstate.Remove("yourkey"); //remove one

Modelstate.Clear(); //remove all

答案 1 :(得分: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 .");