Tôi đang làm việc trong MVC4 và muốn xác định mô hình bằng thuộc tính Uppercase
. Ý tưởng sẽ là sự hiện diện của thuộc tính Chữ hoa sẽ làm cho giá trị mô hình được chuyển thành chữ hoa khi nó đến máy chủ.Thuộc tính chữ hoa chuyển đổi đầu vào thành chữ hoa
Tại thời điểm tôi có đoạn mã sau trong mô hình:
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode, Uppercase=true)]
public string Account
{
get { return _account; }
set
{
if (value != null)
_account = value.ToUpper();
}
}
Nhưng những gì tôi thực sự muốn là thế này:
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode)]
[Uppercase]
public string Account { get; set; }
Tôi nghĩ rằng tôi có thể cần để tạo ra các thuộc tính viết hoa dưới dạng ValidationAttribute
để đảm bảo nó được kích hoạt khi mô hình truy cập máy chủ. Nhưng điều đó có vẻ hơi sai, vì tôi không thực sự xác thực dữ liệu. Có cách nào tốt hơn?
Ngoài ra, có cách nào để đảm bảo lệnh gọi trên các thuộc tính không? Tôi thực sự muốn chuyển đổi dữ liệu thành chữ hoa trước khi thuộc tính tùy chỉnh StringValidation
kích hoạt, vì điều này kiểm tra trường hợp của văn bản trong mẫu regex.
Để thêm một chút nền vào điều này, tôi muốn giảm bớt nhu cầu thêm mã vào chữ hoa dữ liệu. Niết bàn sẽ là một thuộc tính duy nhất, cập nhật dữ liệu trên đường vào máy chủ, trong giai đoạn ràng buộc hoặc xác thực mô hình. Thuộc tính này sau đó có thể được tham chiếu trong thuộc tính StringValidation
để sửa đổi giá trị RegEx được sử dụng trong các kiểm tra của nó. Tôi cũng có thể tra cứu thuộc tính này trong phương thức trợ giúp tùy chỉnh TextBoxFor
, sao cho tôi có thể thêm text-transform: uppercase
để nó có vẻ chính xác ở phía máy khách.
Có ai có ý tưởng nào không?
Điều đó khá thú vị! –
Xin chào, điều này có áp dụng cho MVC 4 không? vì tôi nhận được lỗi sau. 'UpperCaseValidationAttribute' không thực hiện thành viên giao diện 'System.Web.Mvc.IClientValidatable.GetClientValidationRules (System.Web.Mvc.ModelMetadata, System.Web.Mvc.ControllerContext)' bạn có thể vui lòng giúp đỡ không? Cảm ơn!! – ecasper
Có tính năng này hoạt động trong MVC4. Bạn cần phải thêm một ghi đè cho 'public IEnumerable GetClientValidationRules (siêu dữ liệu ModelMetadata, bối cảnh ControllerContext)'. Đây là một chút trong ... trong câu trả lời :) –
Nick