重定向ASP.NET MVC核心客户端验证错误消息

时间:2017-09-09 09:59:51

标签: asp.net-mvc jquery-validate asp.net-core-mvc materialize unobtrusive-validation

我想使用TagHelpers和ASP.NET MVC CORE服务器生成的客户端验证(通过Jquery验证和不引人注意的验证),但遗憾的是我无法使用生成的默认span元素。例如:

        <form asp-action="Index" asp-controller="Test" class="validate-form">
            <div class="row">
                <div class="input-field col s6">
                    <input asp-for="Id" class="validate" />
                    <span asp-validation-for="Id"></span>
                </div>
            </div>

            <button type="submit">CREATE</button>
        </form>

将生成:

<form class="validate-form" action="/Opportunity/1" method="post" 
novalidate="novalidate">
    <div class="row">
        <div class="input-field col s6">
            <input class="validate valid" type="number" data-val="true" data-val-required="The Id field is required." id="Id" name="Id" value="1" aria-describedby="Id-error" aria-invalid="false">
            <span class="field-validation-valid" data-valmsg-for="Id" data-valmsg-replace="true"></span>
        </div>
    </div>

    <button type="submit">CREATE</button>
    <input name="__RequestVerificationToken" type="hidden" value="...">
</form>

但我不想要跨度,我想使用需要此标记的Materialize设计组件:

    <div class="input-field col s12">
      <input id="Id" type="text" class="validate">
      <label for="Id" data-error="error message">Email</label>
    </div>

我需要的是将ASP.NET MVC CORE客户端验证消息重定向到此标签及其数据错误属性。我为此做了一个配置:

$.validator.setDefaults({
    errorClass: 'invalid',
    validClass: "valid",
    errorPlacement: function (error, element) {
        $(element)
            .parent('.input-field')
            .find("label[for='" + element.attr("id") + "']")
            .attr('data-error', error.text());
    }
});

但不幸的是,由于ASP.NET添加了所有不引人注目的javascript,它似乎被忽略了。有没有人知道更好的解决方案或修复我的解决方案?任何答案都会受到欢迎!是的,我尝试制作自定义TagHelper,无法找到解决问题的方法。

0 个答案:

没有答案