tengo ValidationAttribute como:ASP.NET MVC: ValidationAttribute y localizada ErrorMessage
public class Username : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return RegExp.Validate(RegExpLib.Username,value.ToString());
}
}
..y usarlo como esto:
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 es archivo de recursos en App_GlobalResources y "txtUsername" - es el nombre de la cadena en el archivo de recursos.
Problema: Los mensajes de error no se muestran.
Pregunta: Cómo configurar un mensaje de error si tengo pocos idiomas en el sitio web.
Otra información:
soy capaz de acceder SignIn.txtUsername
desde puntos de vista o cualquier archivo en el proyecto. Desde el controlador
ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
funciona bien, así .. puedo asignar ErrorMessage dentro ValidationAttribute, pero ha obtenido un error de validación después de la segunda oportunidad ... si pongo comprobar como este -
if(ErrorMessage != Resources.SignIn.txtUsername)
ErrorMessage = Resources.SignIn.txtUsername;
tengo error después Cambio a otro idioma: ErrorMessage se puede asignar solo una vez.
Por favor, asesórese sobre cómo puedo solucionarlo.
Gracias de antemano.
Cuando escribí Estoy usando recursos globales "SignIn es un archivo de recursos en App_GlobalResources" –
Desafortunadamente, no puede hacer recursos en App_GlobalResources public. En su lugar, debe usar el archivo de recursos de la carpeta "Propiedades": haga clic con el botón derecho en el proyecto, seleccione las propiedades, en el menú de la izquierda, seleccione "Recursos" y haga clic en "este proyecto ...". Se creará el archivo de recursos predeterminado llamado "Resources.resx". Puede cambiarle el nombre (es decir, "ModelErrors") y usarlo en el código: [Obligatorio (ErrorMessageResourceName = "Password_Required", ErrorMessageResourceType = typeof (Properties.ModelErrors))] – Feryt
Sí, eso es cierto. Existen DataAnnotations para ser usadas fuera de ASP.NET, por lo que no saben nada sobre App_XxxResources y solo trabajan con archivos de recursos tradicionales. –