我在我的ViewModel
中使用Remote
屬性ASP.NET MVC 4應用程序。這是我簡單的模型:在ASP.NET MVC中使用遠程驗證,無窗體查看
public class User
{
[Required(AllowEmptyStrings = false, ErrorMessage = "test test")]
public int Id { get; set; }
[DisplayName("Email")]
[Remote("RemoteValidateEmailLengthValidation", "Home")]
public string Email { get; set; }
}
和遠程驗證方法:
public JsonResult RemoteValidateEmailLengthValidation(string Email)
{
if (Email.Length > 20)
{
return Json("Too long email", JsonRequestBehavior.AllowGet);
}
else
{
return Json(true, JsonRequestBehavior.AllowGet);
}
}
我補充說,我需要驗證在Layout
所有腳本:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
寫的一切,我需要在WebConfig
驗證:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
並添加簡單的Controller
,創建空模型並返回View
。
@model ViewModels.User
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("PostUser", "Home", FormMethod.Post))
{
@Html.EditorForModel()
<input type="submit" />
}
,如果我在包裹和form
我模型不能正常工作如果我寫它的工作原理只是我View
這樣的:
@model ViewModels.User
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Html.EditorForModel()
所以我有疑問:
- 爲什麼遠程驗證在沒有形式的情況下無法工因爲在Chrome調試器中,我看到表單不提交,我只看到驗證方法調用。
- 遠程驗證使用哪種JavaScript方法?
OnChange
?我可以在任何地方看到它嗎?我可以改變它嗎?
嘗試取出''@當它是'using'子句 – jbutler483
的'數據-val- *內'的jQuery unobtrusve驗證的必要的屬性不除非在表單內生成html助手,否則該方法將永遠不會被調用(這是設計)。你爲什麼要改變方法? –
@ jbutler483你不明白。 **它使用表單工作**。但是,如果View上沒有任何表單,則不會觸發。我認爲這應該是腳本問題,但我不知道爲什麼。 –