Asp.Net Core Razor 页面中的“ModelState.AddModelError”显示不正确的错误消息
Posted
技术标签:
【中文标题】Asp.Net Core Razor 页面中的“ModelState.AddModelError”显示不正确的错误消息【英文标题】:Incorrect error message is displayed by "ModelState.AddModelError" in Asp.Net Core Razore Pages 【发布时间】:2021-11-29 03:35:37 【问题描述】:在下面我的OnPost
方法中,我检查字段CoursePrice
是否为数字:
public IActionResult OnPost(IFormFile imgCourseUp, IFormFile demoFileName)
float num;
if (!float.TryParse(Course.CoursePrice.ToString(), out num))
ModelState.AddModelError("", "Put a Valid Number..");
return Page();
当我输入无效数字时,例如:“123kk”,一切都出错了。我的意思是 float.TryParse(Course.CoursePrice.ToString(), out num)
方法可以正常工作,我的代码没有任何问题。但是当我运行项目并输入无效号码时,错误消息会是别的东西!例如在这部分ModelState.AddModelError("", "Put a Valid Number..")
,我说错误消息必须是Put a Valid Number..,但它向我显示了这个错误:值'123l'对于قیمت无效??
那么有人有什么想法吗?
这是我的 View Razore:
<div class="form-group">
<label>قیمت دوره </label>
<input class="form-control" type="text" asp-for="@Model.Course.CoursePrice" value="0" />
<p class="help-block">لطفا فقط عدد وارد کنید</p>
</div>
<div class="form-group">
<div asp-validation-summary="All"></div>
</div>
【问题讨论】:
您是否正在并行运行另一个验证框架?例如。是否为该属性设置了数据注释,或者您使用的是 fluentvalidation? 【参考方案1】:ModelState.AddModelError 的第一个参数应该是你的模型属性的名称,所以它知道错误发生在哪个属性中。
尝试将行 ModelState.AddModelError("", "Put a Valid Number..");
更改为 ModelState.AddModelError(nameof(Course.CoursePrice), "Put a Valid Number..");
完整代码:
public IActionResult OnPost(IFormFile imgCourseUp, IFormFile demoFileName)
float num;
if (!float.TryParse(Course.CoursePrice.ToString(), out num))
ModelState.AddModelError(nameof(Course.CoursePrice), "Put a Valid Number..");
return Page();
【讨论】:
我完全知道你在说什么。你之前说的方法我试过了,没有任何影响! 也许它将新错误附加到现有错误列表中。如果您调用 ModelState["CoursePrice"].Errors.Clear(); 会发生什么在调用 ModelState.AddModelError 之前? 我刚刚尝试了 ModelState["CoursePrice"].Errors.Clear(),但再次向我显示了同样的错误! :)以上是关于Asp.Net Core Razor 页面中的“ModelState.AddModelError”显示不正确的错误消息的主要内容,如果未能解决你的问题,请参考以下文章
更改 ASP.NET Core Razor 页面中的默认登录页面?
将 ASP.NET Core Razor 页面中的默认页面更改为登录页面