在 asp.net mvc3 中使用 jquery 不显眼地在元素下方显示验证消息

Show validation messages below the element with jquery unobtrusive in asp.net mvc3

提问人:Prasad 提问时间:3/2/2012 最后编辑:Darius KucinskasPrasad 更新时间:3/8/2015 访问量:16185

问:

我需要在元素下方显示验证消息。

我尝试添加如下消息:

[Required(ErrorMessage = "<br /> UserName is required")]
public string UserName { get; set; }

但是上述必需的消息呈现为(其中验证消息被编码):

<input type="text" value="" tabindex="1" style="height:auto; width:280px;" size="40" name="UserName" maxlength="15" id="UserName" data-val-required="&amp;lt;br /&amp;gt; UserName is required" data-val="true" class="textfield">

Validation Message

如果我从模型的消息中删除,验证消息会显示在两行中。我也尝试添加如下验证,但验证消息不会像下面的验证方法那样被覆盖(从“用户名是必需的”覆盖到“输入用户名”):<br/>

$('#userSignInform').validate({
    rules:
        {
            UserName: { required: true },
            Password: { required: true }
        },
    messages:
        {
            UserName: { required: "Enter Username" },
            Password: { required: "Enter the Password" }
        },
    errorPlacement: function (error, element)
        {
            error.appendTo(element.parent("td").next("td"));
        }
});

需要采取哪些解决方法才能在元素下方显示验证消息并使用jquery validate方法覆盖模型消息?

jquery asp.net-mvc-3 jquery-validate unobtrusive-javascript

评论


答:

10赞 archil 3/2/2012 #1

验证消息标记的生成方式为:

<span class="field-validation-error" data-valmsg-for="UserName" data-valmsg-replace="true">
     <span for="UserName" generated="true" class="">UserName is required</span>
</span>

如您所见,它有类.只需添加简单的 css 即可在新行上显示验证消息field-validation-error

.field-validation-error {
    display: block;
}

验证消息将显示在第二行。

如果您希望此位置仅应用于特定消息,只需将类选择器更改为更具体即可。

评论

1赞 Prasad 3/2/2012
archil,消息完美地显示在元素下方。关于如何使用jquery validate方法更改验证消息的任何解决方法?
0赞 archil 3/2/2012
$('#UserName').rules(“添加”, { messages: { required: “必需输入”, } });这记录在 docs.jquery.com/Plugins/Validation/rules#overview
0赞 Prasad 3/2/2012
archil,非常适合自定义错误消息。我们可以自定义 validate 方法以在新行中显示而不是 css fix 吗?
0赞 archil 3/2/2012
如上所述,您应该像现在一样使用 errorPlacement。
0赞 Prasad 3/2/2012
我已经尝试过了,当我启用不显眼的验证时,它不起作用。
0赞 Satya 3/8/2015 #2

只需添加 html。<br/>

例如:

@Html.LabelFor(m => m.UserName, "User Name 1")
@Html.TextBoxFor(m => m.UserName)<br />
@Html.ValidationMessageFor(m => m.UserName)