Html.ValidationMessageFor输出错误消息

时间:2016-08-08 16:49:56

标签: c# jquery asp.net-mvc visual-studio umbraco

我在Visual Studio和MVC框架中使用C#/ .NET。

我有一个我正在使用的表单,我能够在适当的时候输出正确的错误消息。我的问题是,当字段未填写或填写错误时,表单的输入字段应突出显示带有has-error类的红色。如果我使用常规表单标签,我可以这样做,但因为这是连接到Umbraco项目,我必须使用Html.EditorFor和Html.ValidationMessageFor。

有没有办法(使用jQuery或修改现有代码)在Html.ValidationMessage上为Html.EditorFor字段添加一个类来决定它应该显示消息?

以下是我的观点的一部分:

<div class="name-field">
    <label>Name</label>
    @Html.EditorFor(m => m.Name, new { htmlAttributes = new { @class = "form-control", @id = "contact_name", @name = "contact_name", @placeholder = "Name" } })
    @if (@Html.ValidationMessageFor(model => model.Name) != null)
    {

        @Html.ValidationMessageFor(model => model.Name, null, new { @class = "contact-form-error-msg text-danger small-sized", @id = "contact-form-name-error-1", @style = "display:block;" })


    }
</div>

这是我的模型中的属性:

[Required(ErrorMessage = "Please enter a contact name.")]
public string Name { get; set; }

就像我说的那样,模型中显示的错误消息正确显示。我的问题是将has-error类应用于Html.EditorFor字段,我觉得这将需要jQuery;但是,我不确定如何访问jQuery块中的现有代码。

谢谢。

编辑:我收到通知,我的问题可能与此处的问题重复(How can I check if my model is valid from inside the razor view?)。通过一些修改,我能够找到解决问题的方法。

@if (!ViewData.ModelState.IsValidField("Name")) {
    <div class="name-field has-error">
        @Html.EditorFor(m => m.Name, new { htmlAttributes = new { @class = "form-control", @id = "contact_name", @name = "contact_name", @placeholder = "Name" } })
        @if (@Html.ValidationMessageFor(model => model.Name) != null)
        {
            @Html.ValidationMessageFor(model => model.Name, null, new { @class = "contact-form-error-msg text-danger small-sized", @id = "contact-form-name-error-1", @style = "display:block;" })
        }
    </div>
} else {
    <div class="name-field">
        @Html.EditorFor(m => m.Name, new { htmlAttributes = new { @class = "form-control", @id = "contact_name", @name = "contact_name", @placeholder = "Name" } })
    </div>
}

0 个答案:

没有答案