Tôi đang sử dụng System.ComponontModel.DataAnnotations để xác thực đối tượng mô hình của mình. Làm thế nào tôi có thể thay thế các thông điệp thuộc tính tiêu chuẩn (Bắt buộc và StringLength) sản xuất mà không cung cấp thuộc tính ErrorMessage cho mỗi người trong số họ hoặc phụ phân loại chúng?Cách thay thế thông báo lỗi DataAnnotations chuẩn
Trả lời
Viết bài đăng mới vì tôi cần nhiều định dạng hơn so với nhận xét cung cấp.
Nhìn vào số ValidationAttribute - lớp cơ sở của thuộc tính xác thực.
Nếu xác nhận lỗi xảy ra, thông báo lỗi sẽ được tạo ra bằng phương pháp:
public virtual string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture, this.ErrorMessageString, new object[] { name });
}
nhìn Next ở ErrorMessageString tài sản:
protected string ErrorMessageString
{
get
{
if (this._resourceModeAccessorIncomplete)
{
throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, DataAnnotationsResources.ValidationAttribute_NeedBothResourceTypeAndResourceName, new object[0]));
}
return this.ResourceAccessor();
}
}
tài sản ResourceAccessor có thể được setted từ:
ValidationAttribute..ctor(Func<String>)
ValidationAttribute.set_ErrorMessage(String) : Void
ValidationAttribute.SetResourceAccessorByPropertyLookup() : Void
Đầu tiên nó được sử dụng chính xác bởi các lớp dervided để định dạng tin nhắn, thứ hai - trường hợp khi chúng tôi thiết lập thông báo lỗi trough ErrorMessage tài sản, và thứ ba - khi chuỗi tài nguyên được sử dụng. Tùy thuộc vào trường hợp của bạn, bạn có thể sử dụng ErrorMessageResourceName.
Ở những nơi khác chúng ta hãy nhìn vào nhà xây dựng có nguồn gốc, ví dụ của chúng tôi, Thuộc tính phạm vi:
private RangeAttribute()
: base((Func<string>) (() => DataAnnotationsResources.RangeAttribute_ValidationError))
{
}
Đây RangeAttribute_ValidationError được nạp từ nguồn:
internal static string RangeAttribute_ValidationError
{
get
{
return ResourceManager.GetString("RangeAttribute_ValidationError", resourceCulture);
}
}
Vì vậy, bạn có thể tạo tập tin tài nguyên cho tan khác nhau văn bản mặc định và ghi đè tin nhắn ở đó, như sau:
http://www.codeproject.com/KB/aspnet/SatelliteAssemblies.aspx
http://msdn.microsoft.com/en-us/library/aa645513(VS.71).aspx
Bạn có thể sử dụng ErrorMessage tài sản của lớp cơ sở ValidationAttribute cho tất cả các xác nhận DataAnnotations.
Ví dụ:
[Range(0, 100, ErrorMessage = "Value for {0} must be between {1} and {2}")]
public int id;
Có lẽ nó sẽ giúp.
True. Nhưng có cách nào để thay thế tin nhắn mặc định cùng một lúc không? –
@FitzchakYitzchaki Bạn đã bao giờ đạt được điều đó chưa? –
- 1. Thông báo cảnh báo Javascript Thay thế
- 2. Báo cáo lỗi báo cáo chuẩn bị MySQLi
- 3. Sử dụng DataAnnotations 4,0
- 4. Thay đổi ngôn ngữ cho các thông báo lỗi Subversion
- 5. Làm thế nào để thay thế thông báo lỗi ModelState mặc định trong Asp.net MVC 2?
- 6. Hiển thị Thông báo Lỗi với Sinatra
- 7. - thay đổi thông báo
- 8. Thay đổi thông báo lỗi mặc định bằng simple_form
- 9. RedirectToAction với thông báo lỗi
- 10. Thêm thông báo lỗi vào @ Html.ValidationSummary
- 11. Thông báo lỗi đăng nhập tùy chỉnh JBoss JAAS Thông báo lỗi
- 12. Thay đổi màu lỗi chuẩn cho geom_smooth
- 13. Cách nhận thông báo khi thông báo được thông báo
- 14. Làm cách nào để thay đổi thông báo lỗi trong Emacs?
- 15. Thông báo lỗi AWS: InvalidInstanceID.NotFound
- 16. Thông báo lỗi chi tiết nên như thế nào?
- 17. Xác nhận Knockout - Cách hiển thị thông báo lỗi
- 18. Lỗi trả về jQuery.ajax: Mã thông báo không mong muốn với Thông báo lỗi: parseerror?
- 19. PDO với INSERT INTO thông qua báo cáo chuẩn bị
- 20. Làm thế nào để hiển thị thông báo lỗi JSON?
- 21. Làm thế nào để ngăn chặn thông báo lỗi OpenCV
- 22. Rails 3.1 Tìm hiểu cách thay đổi thông báo Flash CSS Từ thông báo thành công?
- 23. Cách ghi đè thông báo lỗi khi thay đổi mật khẩu
- 24. Rails 3 danh sách thông báo tiêu chuẩn
- 25. Cách tùy chỉnh thông báo lỗi xác thực JSF
- 26. cách xuất thông báo gỡ lỗi từ install.ps1 trong NuGet
- 27. Thường xuyên thông báo lỗi biểu
- 28. trong R cách nhận thông báo lỗi bằng tiếng Anh
- 29. Hiện thông báo lỗi trong Rails cảnh báo flash 3
- 30. Làm cách nào để thay thế mã thông báo bằng kết quả `pwd` trong sed?
Cảm ơn rất nhiều Veton. Phần cuối cùng bạn đã đề cập tôi đã hoàn toàn bỏ qua. –
Tôi không thể hiểu làm thế nào nên các tập tin tài nguyên được đặt tên (và nơi được đặt) để ghi đè ResourceManager từ DataAnnotations.dll. – wRAR