如果客户端Javascript禁用了文本框,是否可以禁用服务器端MVC验证?因为,如果我禁用了文本框,那么就不会有任何内容。
答案 0 :(得分:0)
是。有可能。 我有答案:远程验证。 如果使用[Required]属性并且未填充该字段,则ModelState将始终响应为无效。所以一个很好的选择是使用Remote Validation属性。
我为你做了这个例子:
<强>型号:强>
[Required]
[RegularExpression(@"^[0-9]*$", ErrorMessage = "Only Numbers")]
[Remote("CheckIfIsDisable", "Home", AdditionalFields = "TXTstatus", ErrorMessage = "You must to fill this field")]
[DisplayName("Register Number")]
public String bookId { get; set; }
查看:强>
@Html.TextBoxFor(model => model.bookId)
@Html.ValidationMessageFor(model => model.bookId)
@Html.Hidden("TXTstatus", "enable")
<input type="button" onClick = "return disableTXT()" text="Toggle Disable/Enable bookId field"/>
您必须使用javascript函数切换值:
<script>
function disableTXT() {
if ($("#TXTstatus").val() === "enable") {
$("#TXTstatus").val("disable");
}
else {
$("#TXTstatus").val("enable");
}
}
</script>
<强>控制器:强>
public ActionResult CheckIfIsDisable(string bookId, string TXTstatus)
{
if (TXTstatus == "enable")
{
// This show the error message of validation
return Json(true, JsonRequestBehavior.AllowGet);
}
else
{
// This will ignore the validation
return Json(false, JsonRequestBehavior.AllowGet);
}
}
只是一个例子。随意改变并根据您的需求进行调整。随便问一下。