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);;
}如果post没有错误,则一切工作正常。但是如果我添加了一些错误,如何在TestControl()方法中获得当前的模型状态呢?
发布于 2009-07-30 07:57:28
我也遇到了同样的问题,使用ValidationApplicationBlock和一个小函数,我得到了以下结果。所有这些都得益于大卫·海登的网站(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干杯,
安德鲁
https://stackoverflow.com/questions/1205028
复制相似问题