在运行时更改MVC中的验证消息

时间:2019-06-17 21:48:56

标签: c# model-view-controller

我有一条验证消息,指出我需要在运行时更改错误消息文本的位置(当他们单击提交按钮时)。

根据传入的ID,用户必须发送XML或查询。

如果他们应该发送查询,我希望它说:“需要查询。”

如果他们应该发送xml,我希望它说:“需要XML。”

我试图清除ModelState.Clear();

我尝试不设置ValidationMessageFor()中的第二个参数...(通常是“”,但是当我尝试在其中设置它时,当页面加载时它将自动显示在页面上)< / p>

        @Html.ValidationMessage("RawXmlOrQueryText", string.Format("The {0} field is required.", Model.Label), new { @class = "text-danger" })

如果我做这样的事情,那就永远不会显示句点:

 @Html.ValidationMessageFor(m => m.RawXmlOrQueryText, string.Format("The {0} field is required.", Model.Label), new { @class = "text-danger", style = "display:" + "none" + ";" })

有更好的方法吗?

我希望能够在运行时设置错误消息,并在用户单击按钮之前将其显示在页面上。

1 个答案:

答案 0 :(得分:0)

您可以使用AddModelError()吗?

假设您正在使用此模型:

public class IndexModel
{
    public string QueryText { get; set; }
} 

在您的post方法中,添加以下代码:

var isXML = true; //oversimplification of your validation code
var someErrorMsg = isXML ? "The XML is required." : "The Query is required.";
ModelState.AddModelError(nameof(model.QueryText), someErrorMsg);
return View(model);