Tôi có ValidationAttribute như:ASP.NET MVC: ValidationAttribute và cục bộ ErrorMessage
public class Username : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return RegExp.Validate(RegExpLib.Username,value.ToString());
}
}
..và sử dụng nó như thế này:
public class AccountSignIn
{
[Username(ErrorMessageResourceName ="txtUsername",ErrorMessageResourceType=typeof(SignIn))]
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
}
signin là tập tin tài nguyên tại App_GlobalResources và "txtUsername" - là tên chuỗi trong tệp tài nguyên.
Sự cố: Thông báo lỗi không được hiển thị.
Câu hỏi: Cách đặt thông báo lỗi nếu tôi có ít ngôn ngữ trên trang web.
Một thông tin:
Tôi có thể truy cập SignIn.txtUsername
khỏi Chế độ xem hoặc bất kỳ tập tin trong dự án. Từ điều khiển
ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
hoạt động tốt cũng .. Tôi có thể gán ErrorMessage bên ValidationAttribute, nhưng đã nhận lỗi sau khi xác nhận thứ hai thử ... nếu tôi đặt kiểm tra như thế này -
if(ErrorMessage != Resources.SignIn.txtUsername)
ErrorMessage = Resources.SignIn.txtUsername;
Tôi có lỗi sau Tôi chuyển sang ngôn ngữ khác - ErrorMessage chỉ có thể được gán một lần.
Vui lòng tư vấn cách tôi có thể giải quyết.
Cảm ơn bạn trước.
Như tôi đã viết Tôi đang sử dụng tài nguyên toàn cầu "Đăng nhập là tệp tài nguyên tại App_GlobalResources" –
Thật không may, bạn không thể tạo tài nguyên trong tài nguyên App_GlobalResources. Bạn phải sử dụng tệp tài nguyên từ thư mục "Properties" thay vì - nhấp chuột phải vào dự án, chọn thuộc tính, từ menu bên trái chọn "Tài nguyên" và nhấp vào "dự án này ...". Tệp tài nguyên mặc định có tên "Resources.resx" sẽ được tạo. Bạn có thể đổi tên nó (ví dụ "ModelErrors") và sử dụng trong mã: [Bắt buộc (ErrorMessageResourceName = "Password_Required", ErrorMessageResourceType = typeof (Properties.ModelErrors))] – Feryt
Đúng, đó là sự thật. DataAnnotations tồn tại được sử dụng bên ngoài ASP.NET, vì vậy họ không biết gì về App_XxxResources và chỉ làm việc với các tệp tài nguyên truyền thống. –