ModelState.AddModelError到字段的特定ValidationMessageFor?

问题描述 投票:3回答:2

我有以下代码来生成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(....

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

asp.net asp.net-mvc asp.net-mvc-5
2个回答
5
投票

您需要提供一个密钥:

ModelState.AddModelError("ImageUpload", "Invalid image file.");

0
投票

这并没有完全回答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 );
}

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

© www.soinside.com 2019 - 2024. All rights reserved.