如果禁用控件,则禁用服务器端MVC验证

时间:2014-11-02 18:56:48

标签: asp.net-mvc validation

如果客户端Javascript禁用了文本框,是否可以禁用服务器端MVC验证?因为,如果我禁用了文本框,那么就不会有任何内容。

1 个答案:

答案 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);
            }
        }

只是一个例子。随意改变并根据您的需求进行调整。随便问一下。