我有ValidationAttribute像:
public class Username : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return RegExp.Validate(RegExpLib.Username,value.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
..并使用它像这样:
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; }
}
Run Code Online (Sandbox Code Playgroud)
SignIn是App_GlobalResources的资源文件,"txtUsername" - 是资源文件中的字符串名称.
问题:未显示错误消息.
问题:如果网站上的语言很少,如何设置错误消息.
另一个信息:
我可以SignIn.txtUsername从Views或项目中的任何文件访问.来自控制器
ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
Run Code Online (Sandbox Code Playgroud)
工作正常..我可以在ValidationAttribute内部分配ErrorMessage,但在第二次验证后得到错误尝试...如果我这样检查 -
if(ErrorMessage != Resources.SignIn.txtUsername)
ErrorMessage = Resources.SignIn.txtUsername;
Run Code Online (Sandbox Code Playgroud)
切换到另一种语言后出错 - ErrorMessage只能分配一次.
请告诉我如何解决它.
先感谢您.
Lau*_*rjo 10
我在使用本地化错误消息和DataAnnotations方面遇到了一些问题,与您的情况非常相似.虽然我最终没有将空白显示为错误消息,但我总是抛出一些异常.我的解决方案是:
在App_GlobalResources/Errors.resx中打开资源文件,将其属性更改为Build Action:Embedded Resource,Custom Tool:PublicResXFileCodeGenerator,Custom Tool Namespace:Resources(visual studio在自动生成这些内容时做了一些奇怪的事情,所以再次检查一下是否正常)
将资源文件的访问修饰符更改为Public
从生成的代码文件(Errors.Designer.cs)中检查命名空间和访问修饰符是否正确.
试试吧
我在Model类中的例子:
[Required(ErrorMessageResourceType = typeof(Resources.Errors), ErrorMessageResourceName="ResponseMessageRequired")]
public string message { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9967 次 |
| 最近记录: |