我想驗證MVC 4與jQuery的形式,但我想獲得數據註釋 屬性做它。如何使用jQuery驗證使用DataAnnotations屬性?
我的模型:
[Required(AllowEmptyStrings = false,ErrorMessage = "Username is required")]
[Display(ResourceType = typeof(EntitiesResources), Name = "Username")]
string Username { get; set; }
[Display(ResourceType = typeof(EntitiesResources), Name = "Password")]
[Required(AllowEmptyStrings = false)]
string Password { get; set; }
[Display(ResourceType = typeof(EntitiesResources), Name = "Email")]
[DataType(DataType.EmailAddress)]
string Email { get; set; }
我的MVC觀點:
<div class="row form-group">
<div class="col-xs-2 col-sd-2 col-md-2 col-lg-2">@Html.LabelFor(m => m.FirstName)</div>
<div class="col-xs-4 col-sd-4 col-md-4 col-lg-4">@Html.TextBoxFor(m => m.FirstName, new { required = "required" })</div>
<div class="col-xs-2 col-sd-2 col-md-2 col-lg-2">@Html.LabelFor(m => m.Email)</div>
<div class="col-xs-4 col-sd-4 col-md-4 col-lg-4">@Html.TextBoxFor(m => m.Email, new { required = "required" })</div>
我的問題是,如果我不把那個 '需要' 在MVC視圖屬性,它不不工作($(「#UserForm」)。valid()總是返回true)。我也想使用電子郵件驗證。
我打電話jQuery驗證的Ajax調用:
$("#UserForm").validate();
if ($("#UserForm").valid()) {
var model = {
Id: $("#Id").val(),
FirstName: $("#FirstName").val(),
Email: $("#Email").val(),
LastName: $("#LastName").val(),
Enabled: $("#Enabled").val(),
Username: $("#Username").val(),
Password: $("#Password").val(),
}
$.ajax({
url: "SaveUser/Users",
type: "Post",
contentType: 'application/json',
dataType: "json",
data: JSON.stringify(model),
success: function (data) {
alert(data.Message);
returnUsersGrid();
},
error: function (e) {
},
complete: function() {
}
});
}
反正是有使用數據的註釋與剃刀幫手和jQuery驗證或數據註解只適用於服務器端驗證與ModelState.isvalid()?
只需添加'@ Html.ValidationMessageFor(...)'幷包含相關腳本('jquery.validate.js'和'jquery.validate.unobtrusive.js')並移除'new {required =「required」 }'(這是HTML5客戶端驗證) –
作爲一個方便的說明它的只是'data:$('form')。serialize(),'和remove'contentType:'application/json',' –
謝謝Stephen,但我只是添加@ Html.ValidationMessageFor(...)並刪除html所需的屬性和$(「#UserForm」)。valid()返回true。這就像html助手不會獲取數據註釋屬性。 – Mikelon85