有时可能发生的情况是在 MVC 程序集内部的某个地方抛出了一个错误,该错误没有得到很好的处理,并且没有按预期复制到您的模型状态中。然后,当您尝试在视图中显示 时Html.ValidationSummary
,它不会向您显示错误,这可能会非常令人困惑。一个可以使我在这里写过的模型绑定过程崩溃的例子。通常,在弄清楚为什么会发生这种情况之后,您可以对代码进行更正,而不必再担心了。
我有以下代码,用于在调试期间检查,让我将鼠标悬停在断点处并查看实际情况:
public static IDictionary<string, string> GetModelStateErrors(this ViewDataDictionary viewDataDictionary)
{
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (var modelStateKey in viewDataDictionary.ModelState.Keys)
{
var modelStateValue = viewDataDictionary.ModelState[modelStateKey];
foreach (var error in modelStateValue.Errors)
{
var errorMessage = error.ErrorMessage;
var exception = error.Exception;
if (!String.IsNullOrEmpty(errorMessage))
{
dict.Add(modelStateKey, "Egads! A Model Error Message! " + errorMessage);
}
if (exception != null)
{
dict.Add(modelStateKey, "Egads! A Model Error Exception! " + exception.ToString());
}
}
}
return dict;
}
然后,我可以在尝试 UpdateModel 后插入它,并在其上设置断点:
var x = ViewData.GetModelStateErrors();
把这个放在你的电话之后UpdateModel
。将鼠标悬停在x
将向您显示模型绑定过程中的任何未处理的异常,如果这确实是这里的问题。
祝你好运!