此字段可选择根据其可见性进行验证。如果该字段被隐藏,那么我们不想验证它,但如果它没有被隐藏,那么我想要添加所需的验证。
我现在手动检查并逐步调试我可以看到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>
答案 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
});