ModelState.AddModelError到字段的特定ValidationMessageFor?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ModelState.AddModelError到字段的特定ValidationMessageFor?相关的知识,希望对你有一定的参考价值。

我有以下代码来生成html输入和验证消息。

@Html.ValidationSummary(false)
......
<div class="col-md-10">
    @Html.TextBoxFor(model => model.ImageUpload, new { type = "file", name = "file" })
    @Html.ValidationMessageFor(model => model.ImageUpload)
</div>

在我的行动中我有代码

if (.... something wrong with the input ....) 
{
    ModelState.AddModelError("", "Invalid image file.");
    return RedirectToAction(....

但是,它将在验证摘要部分中显示错误消息。是否可以在验证消息部分显示错误消息以进行输入?

答案

您需要提供一个密钥:

ModelState.AddModelError("ImageUpload", "Invalid image file.");
另一答案

这并没有完全回答OP原始问题,但我正在寻找的是能够将模型错误添加到ModelState中,以便我的表单上的控件不属于模型。这样做的方法是向页面添加ValidationMessage帮助程序,您可以通过名称在AddModelError调用中引用该页面。例:

@Html.ValidationSummary(false)
......
<div class="col-md-10">
    <input name="FileName" />
    @Html.ValidationMessage("FileNameValidation")
</div>

然后,在控制器操作中,您可以执行以下操作:

if (.... something wrong with the input ....) 
{
    ModelState.AddModelError("FileNameValidation", "Please fix the File Name.");
    return View( viewModel );
}

希望这可以帮助那些情况略有不同的人。

以上是关于ModelState.AddModelError到字段的特定ValidationMessageFor?的主要内容,如果未能解决你的问题,请参考以下文章

Modelstate.addmodelerror 未显示在 PartialView 中

Asp.Net Core Razor 页面中的“ModelState.AddModelError”显示不正确的错误消息

ModelState.AddModelError 在 asp.net.core RAZOR 页面中不显示任何消息

ASP.Net MVC - GET/POST 具有不同模型时的 ModelState.AddModelError

工作总结 ModelState.AddModelError("ShiYiObject", "对象不能为空!"); 小知识

遍历ModelState中存储的错误信息