以下代码在MVC 2中运行良好,但在迁移到MVC 3之后,在执行方法modelState.AddModelError
时会抛出类型ArrayTypeMismatchException的异常public static void CopyTo(this RulesException ruleException, ModelStateDictionary modelState)
{
foreach (var propertyError in ruleException.Errors)
{
string key = ExpressionHelper.GetExpressionText(propertyError.Property);
var message = propertyError.Message;
modelState.AddModelError(key, message );
}
}
这是在视图未验证后执行的扩展方法。这是这样称呼
[HttpPost, Authorize]
public ActionResult Create(Entity entity)
{
try
{
//..... perform creation of entity
}
catch (RulesException ex)
{
ex.CopyTo(Controller.ModelState);
}
return View(entity);
}
有什么想法吗?谢谢
斯特凡诺
答案 0 :(得分:1)
我遇到了类似扩展的同样问题。 检查与帮助程序的项目是否引用System.Web.MVC 3.0.0.0而不是2.0.0.0。 要仔细检查只是在CopyTo函数中将参数“ModelStateDictionary”更改为“object”,您应该得到正确的错误消息(参考中的错误)。 希望它有所帮助