Tôi hiện đang sử dụng ModelStateDictionary trong asp.net mvc để giữ lỗi xác thực và chuyển sau đó quay lại người dùng. Có thể kiểm tra xem toàn bộ mô hình có hợp lệ với ModelState.IsValid hay không. Tuy nhiên, một ứng dụng hiện tại tôi đang làm việc có nhu cầu có thể báo cáo cảnh báo. Đây không phải là quan trọng nên nội dung biểu mẫu vẫn có thể được lưu, nhưng chúng sẽ được hiển thị cho người dùng để có thể tùy chọn hành động.Cảnh báo mô hình trong ASP.NET MVC
Tôi đã xem xét qua khuôn khổ để xem liệu có bất kỳ vị trí rõ ràng nào để mở rộng nó để cho phép tôi thực hiện điều này hay không. Tôi đang nghĩ rằng một từ điển khác có cảnh báo và một lớp con của lỗi mô hình được gọi là cảnh báo mô hình. Tôi không chắc làm thế nào tôi muốn có được khuôn khổ để sử dụng các lớp container mới của tôi trong xem vv mặc dù, tôi vẫn muốn tất cả các công cụ lỗi hiện có để làm việc.
Nếu có ai đó đã thử bất cứ điều gì tương tự hoặc có bất kỳ suy nghĩ nào tôi đánh giá cao ý kiến của họ.
Cập nhật:
Tôi đã có như xa như mở rộng ViewDataDictionary để thêm một số cảnh báo
public class AetherViewDataDictionary : ViewDataDictionary
{
public AetherViewDataDictionary()
{
ModelStateWarning = new ModelStateDictionary();
}
public AetherViewDataDictionary(object model) : base(model)
{
ModelStateWarning = new ModelStateDictionary();
}
public AetherViewDataDictionary(ViewDataDictionary viewDataDictionary) : base(viewDataDictionary)
{
ModelStateWarning = new ModelStateDictionary();
}
public ModelStateDictionary ModelStateWarning { get; private set; }
}
Vấn đề mà tôi đang gặp bây giờ là khi tôi nhận được mã quan điểm của tôi, điều này chỉ là để gỡ lỗi Tôi đang mất thực tế là loại mới của tôi, vì vậy khi tôi cố gắng truyền lại và truy cập vào từ điển mới của tôi, tôi không có niềm vui.
public partial class Index : ViewPage<PageViewData>
{
protected override void SetViewData(ViewDataDictionary viewData)
{
base.SetViewData(viewData);
}
}
Nó đặt chính xác ở đây, nhưng khi tôi kiểm tra loại nó đã biến mất.
Chỉnh sửa: Điều này hóa ra lại là một cách làm câm lặng, xem câu trả lời bên dưới.
TryedValue là gì? –
Ngoài ra "if (aState == null) trả về true;" dòng không đúng. Chúng ta nên trả về true nếu và chỉ khi bộ sưu tập có liên quan có ít nhất một mục. Vì vậy, bạn nên loại bỏ dòng này và thay đổi dòng tiếp theo thành "return (aState! = Null && aState.Warnings.Count> 0);" –