ModelState.AddModelError到字段的特定ValidationMessageFor?

时间:2014-02-17 03:32:46

标签: asp.net asp.net-mvc asp.net-mvc-5

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

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

2 个答案:

答案 0 :(得分:5)

您需要提供一个密钥:

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

答案 1 :(得分: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 );
}

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