Tôi đang cố gắng sử dụng MVC cho một dự án mới sau khi đã được xung quanh khối với tất cả các mẫu và hướng dẫn và như vậy. Tuy nhiên, tôi đang có một thời gian khó khăn để tìm ra nơi mà một số điều nên diễn ra.Câu hỏi ràng buộc và xác thực mô hình ASP.NET MVC
Ví dụ, tôi có một thực thể được gọi là Hồ sơ. Thực thể này chứa các công cụ loại hồ sơ bình thường cùng với thuộc tính DateOfBirth thuộc kiểu DateTime. Trên biểu mẫu HTML, ngày sinh của trường được chia thành 3 trường. Bây giờ, tôi biết tôi có thể sử dụng một mô hình tùy chỉnh chất kết dính để xử lý này, nhưng nếu ngày nhập vào không phải là một ngày hợp lệ? Tôi có nên kiểm tra điều đó trong chất kết dính mô hình không? Nên tất cả các xác nhận của tôi đi vào mô hình chất kết dính? Có ok để chỉ có một vài điều xác nhận trong mô hình chất kết dính và xác nhận phần còn lại trong bộ điều khiển hoặc mô hình chính nó?
Đây là mã tôi hiện có, nhưng nó không có vẻ phù hợp với tôi. Có vẻ bẩn hoặc có mùi.
namespace WebSite.Models
{
public class ProfileModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
DateTime birthDate;
var form = controllerContext.HttpContext.Request.Form;
var state = controllerContext.Controller.ViewData.ModelState;
var profile = new Profile();
profile.FirstName = form["FirstName"];
profile.LastName = form["LastName"];
profile.Address = form["Address"];
profile.Address2 = form["Address2"];
profile.City = form["City"];
profile.State = form["State"];
profile.Zip = form["Zip"];
profile.Phone = form["Phone"];
profile.Email = form["Email"];
profile.Created = DateTime.UtcNow;
profile.IpAddress = controllerContext.HttpContext.Request.UserHostAddress;
var dateTemp = string.Format("{0}/{1}/{2}",
form["BirthMonth"], form["BirthDay"], form["BirthYear"]);
if (string.IsNullOrEmpty(dateTemp))
state.AddModelError("BirthDate", "Required");
else if (!DateTime.TryParse(dateTemp, out birthDate))
state.AddModelError("BirthDate", "Invalid");
else
profile.BirthDate = birthDate;
return profile;
}
}
}
Xây dựng trên mã mẫu ở trên, bạn sẽ làm thông báo xác thực cho trường 3 phần như thế nào? Trong trường hợp trên, tôi đang sử dụng một khóa hoàn toàn riêng biệt không thực sự tương ứng với một trường trong biểu mẫu, bởi vì tôi không muốn thông báo lỗi xuất hiện bên cạnh tất cả 3 trường. Tôi chỉ muốn nó xuất hiện ở bên phải của trường Năm.
Bạn đang tìm kiếm xác thực mẫu hoặc xác thực biểu mẫu? Tôi muốn giới thiệu cả hai. Bằng cách này, bạn có thể moq mô hình cũng như cung cấp giao diện người dùng phong phú trên giao diện người dùng. –