gpt4 book ai didi

asp.net-mvc-2 - 带有异常参数的 ModelState.AddModelError 的目的

转载 作者:行者123 更新时间:2023-12-02 10:57:14 27 4
gpt4 key购买 nike

AddModelError 的重载有用途吗? () 以 Exception 作为参数?

如果我在 Controller 中包含以下代码:

ModelState.AddModelError( "", new Exception("blah blah blah") );
ModelState.AddModelError( "", "Something has went wrong" );

if (!ModelState.IsValid)
return View( model );

我认为以下内容:

<%= Html.ValidationSummary( "Please correct the errors and try again.") %>

然后,错误摘要中仅显示文本“出现问题”。

最佳答案

检查源 ModelError 是否接受两者,其用途是用于模型类型转换失败。

在这种特殊情况下,需要沿着异常树向下查找内部异常,以找到实际的根错误,而不是通用的顶级异常消息。

foreach (ModelError error in modelState.Errors.Where(err => String.IsNullOrEmpty(err.ErrorMessage) && err.Exception != null).ToList()) {
for (Exception exception = error.Exception; exception != null; exception = exception.InnerException) {
if (exception is FormatException) {
string displayName = propertyMetadata.GetDisplayName();
string errorMessageTemplate = GetValueInvalidResource(controllerContext);
string errorMessage = String.Format(CultureInfo.CurrentCulture, errorMessageTemplate, modelState.Value.AttemptedValue, displayName);
modelState.Errors.Remove(error);
modelState.Errors.Add(errorMessage);
break;
}
}
}

正如您所看到的,它循环遍历 ModelError 中的异常以查找 FormatException。这是我在 MVC 2 和 MVC 3 中能找到的唯一真正的引用。

也就是说,对于常规使用来说可能没有必要。

关于asp.net-mvc-2 - 带有异常参数的 ModelState.AddModelError 的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com