Tôi có hành động ASP.NET MVC đơn giản như sau:
public ActionResult Edit(EditPostViewModel data)
{
}
Có EditPostViewModel
các thuộc tính xác thực như sau:
[Display(Name = "...", Description = "...")]
[StringLength(100, MinimumLength = 3, ErrorMessage = "...")]
[Required()]
public string Title { get; set; }
Trong chế độ xem, tôi đang sử dụng các trình trợ giúp sau:
@Html.LabelFor(Model => Model.EditPostViewModel.Title, true)
@Html.TextBoxFor(Model => Model.EditPostViewModel.Title,
new { @class = "tb1", @Style = "width:400px;" })
Nếu tôi gửi trên một biểu mẫu mà hộp văn bản này được đặt trong xác nhận sẽ được thực hiện trước tiên trên máy khách và sau đó trên dịch vụ ( ModelState.IsValid
).
Bây giờ tôi có một vài câu hỏi:
Điều này có thể được sử dụng với jQuery ajax submit thay thế không? Những gì tôi đang làm chỉ đơn giản là xóa biểu mẫu và khi nhấp vào nút gửi, javascript sẽ thu thập dữ liệu và sau đó chạy
$.ajax
.Phía máy chủ sẽ
ModelState.IsValid
hoạt động?Làm cách nào để tôi có thể chuyển tiếp vấn đề xác thực trở lại máy khách và trình bày nó như thể tôi đang sử dụng xây dựng int validation (
@Html.ValidationSummary(true)
)?
Ví dụ về lệnh gọi Ajax:
function SendPost(actionPath) {
$.ajax({
url: actionPath,
type: 'POST',
dataType: 'json',
data:
{
Text: $('#EditPostViewModel_Text').val(),
Title: $('#EditPostViewModel_Title').val()
},
success: function (data) {
alert('success');
},
error: function () {
alert('error');
}
});
}
Chỉnh sửa 1:
Bao gồm trên trang:
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>