1
如果客戶端Javascript禁用了文本框,是否可以禁用服務器端MVC驗證?因爲,如果我的文本框被禁用,那麼它將不會有任何內容。如果控制被禁用,禁用serverside MVC驗證
如果客戶端Javascript禁用了文本框,是否可以禁用服務器端MVC驗證?因爲,如果我的文本框被禁用,那麼它將不會有任何內容。如果控制被禁用,禁用serverside MVC驗證
是的。是可能的。 我有你的答案:遠程驗證。 如果您使用[必需]屬性,並且不填充該字段,則ModelState將始終以無效方式進行響應。所以一個好的選擇是使用遠程驗證屬性。
我讓你這個例子:
型號:
[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);
}
}
僅僅是一個例子。隨意改變並適應您的需求。隨時提問。