Có một rất nhiều bài rất tốt và giải thích làm thế nào để thực hiện xác nhận với ASP.NET MVC, và tôi thích một trong những:
Tuy nhiên, tôi thực sự muốn gọi ActionMethods thông qua phương thức jquery $ .ajax. Một trong những lý do tại sao tôi muốn sử dụng $ .ajax là vì sẽ có rất nhiều lượt xem một phần được tải vào trang động (ngay cả biểu mẫu để tạo thực thể) thông qua các cuộc gọi $ .ajax và tôi không thể trả về chế độ xem - Tôi sẽ mất tất cả nội dung được tải động.
Để cung cấp cho bạn một cái nhìn tốt hơn về vấn đề này, tôi sẽ đăng một số mã đơn giản để giải thích làm thế nào tôi muốn gọi hành động của bộ điều khiển và xử lý câu trả lời trong máy khách, mã jquery.
Các bộ điều khiển ActionMethod:
public ActionResult CreateCustomer(string name, string accountNumber)
{
try
{
CustomerService.InsertCustomer(name, accountNumber);
return Json(new ActionInfo()
{
Success = true,
Message = "Customer Is Successfully Created"
});
}
catch (Exception ex)
{
return Json(new ActionInfo()
{
Success = false,
Message = ex.Message
});
}
}
Calling và xử lý trong mã khách hàng:
$.ajax({
type: "POST",
url: $form.attr('action'),// /MyController/CreateCustomer
data: $form.serialize(),
error: HandleUnespectedError,
dataType: "json",
success: function(response) {
if (response.Success)
alert("Success: " + response.Message);
else
alert("Error: " + response.Message);
}});
Có cách nào tốt để làm cho một số trong những khuôn khổ xác nhận để làm việc theo cách tôi cần? Tôi biết rằng tôi có thể thêm các lỗi xác thực trong ActionInfo và sau đó xử lý nó trong ứng dụng khách, nhưng đó sẽ là một tòa nhà xác thực của tôi, tôi tin.
Xin chào! Cảm ơn rất nhiều vì nỗ lực :) Tôi hoàn toàn đồng ý với bạn về thực thể khách hàng về ràng buộc (muốn làm như vậy, không biết tại sao tôi lại đặt phương thức với các tham số đơn giản) và xử lý ngoại lệ. Với xVal, tôi có thể thực hiện một cách dễ dàng xác thực ứng dụng khách, và nếu ai đó tránh nó, tôi sẽ bắt nó trong hành động. Nhưng làm thế nào tôi sẽ trình bày thông báo xác nhận bên cạnh các trường trong trường hợp đó? –
Đối với điều đó, bạn sẽ muốn trả về một phần xem hơn là JSON từ hành động điều khiển của bạn. Trong chế độ xem một phần của bạn, bạn sẽ sử dụng phương thức trình trợ giúp Html.ValidationMessage() để hiển thị thông báo lỗi cho từng trường. Thông báo lỗi cấp trường được tạo bởi thuộc tính Chú thích dữ liệu của bạn có sẵn cho bộ điều khiển của bạn thông qua thuộc tính 'ModelState'. Ví dụ, để nhận được thông báo lỗi đầu tiên cho một trường được gọi là tên, bạn sẽ nhận được nó thông qua 'ModelState [" Tên "]. Lỗi [0] .ErrorMessage'. Ngoài ra, hãy xem phương thức 'Ajax.BeginForm'. Tôi đã sử dụng nó với thành công lớn trong quá khứ. –
Đó là những gì tôi nhận ra, hoặc là tôi sẽ trả về JSON hoặc xem một phần, và đó là điều tôi không thích ... Tuy nhiên, tôi sẽ xem xét cách xử lý nó bằng cách sử dụng MS được xây dựng trong các tính năng Ajax, mặc dù mong muốn của tôi là để tránh điều đó :) Cảm ơn –