手动为mvc表单添加不显眼的验证

时间:2017-03-03 15:34:48

标签: javascript c# jquery asp.net-mvc

此字段可选择根据其可见性进行验证。如果该字段被隐藏,那么我们不想验证它,但如果它没有被隐藏,那么我想要添加所需的验证。

我现在手动检查并逐步调试我可以看到MS不显眼的验证库在我更改了class属性后重置了类。

我猜测我可以从不显眼的验证库中调用一些内置方法,但似乎无法弄明白。

模型

[Column(TypeName = "varchar")]
[StringLength(150, ErrorMessage = "Url must be less than 151 characters.")]
public string Url { get; set; }

查看Javascipt

if ($("#Url").val() === '') {
    $('#Url').addClass('input-validation-error');
    return false;
} else {
    $('#Url').removeClass('input-validation-error');
}

查看表单

<div>
    @Html.TextBoxFor(m => m.Url)
    @Html.ValidationMessageFor(m => m.Url)
</div>

3 个答案:

答案 0 :(得分:0)

为什么不限制输入长度?

@Html.TextBoxFor(m => m.Url, new { maxlength = 150 })  

好的,我没有尝试过,但我认为它大致是你想要的

<div>
    @ Html.TextBoxFor(m => m.Url)
    @ If (Model.validateUrl)
      {
         var v = new ValidationMessageFor(m=>m.Url);
         v.GetHtml();
      }
</div>

或者它可能就像

一样简单
<div>
    @ Html.TextBoxFor(m => m.Url)
    @ If (Model.validateUrl)
      {
         @ Html.ValidationMessageFor(m => m.Url)
      }
</div>

我不记得哪一个是合适的,最近在角度上工作了很多

答案 1 :(得分:0)

你无法添加类,因为它不起作用你必须使用$.validator所以你的代码将是这样的

      <script type="text/javascript">
$("#Submitbutton")
    .click(function() {


        if ($("#Url").val() === '') {
            $.validator.setDefaults({
                ignore: "#Url"
            });

        } else {
            $.validator.setDefaults({
                ignore: null
            });
            return false;

        }
    });

它将检查其值是否为null,它将忽略验证,否则它将显示验证错误

答案 2 :(得分:0)

啊终于找到了它!

以下是如何使用内置验证库动态添加验证!

$('#Url').rules('add', {
    required: true
});