public ActionResult TestControl()
{
return PartialView();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TestControl(FormCollection form)
{
if(!IsValid(form))
{
ModelState.AddModelError("_FORM", "Some error");
}
return Redirect(Request.UrlReferrer.AbsoluteUri);;
}
如果帖子没有错误,一切正常。但是,如果我添加一些错误,如何在方法TestControl()中获取当前模型状态?
答案 0 :(得分:0)
我有同样的问题,使用ValidationApplicationBlock和一个小函数我得到了这个。所有人都可以参考David Hayden的网站(http://www.davidhayden.com/)
if (thread.HasErrors)
{
AddValidationResults(thread.Errors, ViewData.ModelState, ValueProvider);
return View(thread);
}
然后在我的BaseController里面我有:
protected static void AddValidationResults(ValidationResults results,
ModelStateDictionary modelState, IDictionary<string,ValueProviderResult> valueProvider)
{
foreach (ValidationResult result in results)
{
modelState.AddModelError(result.Key,result.Message);
modelState.SetModelValue(result.Key, valueProvider[result.Key]);
}
}
关键是第二行:
modelState.SetModelValue
干杯,
安德鲁