相关疑难解决方法(0)

本地化数据注释默认消息([必需] [StringLength]等)

如果我用这样的属性装饰我的ViewModels的属性:

public class Vm
{

[Required]
[StringLength(35)]
public string Name {get;set;}

}
Run Code Online (Sandbox Code Playgroud)

我将获得英语验证消息:

"this field is required"
"The field Name must be a string with a maximum length of 35"
Run Code Online (Sandbox Code Playgroud)

我怎么能翻译它们?

asp.net-mvc localization data-annotations

21
推荐指数
2
解决办法
2万
查看次数

在ASP.Net MVC 2中为非属性模型验证提供本地化错误消息?

我正在使用DataAnnotations属性和ASP.Net MVC 2为我的ViewModel提供模型验证:

public class ExamplePersonViewModel {
    [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
    [StringLength(128, ErrorMessageResourceName = "StringLength", ErrorMessageResourceType = typeof(Resources.Validation))]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
    [DataType(DataType.Text)]
    public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这似乎按预期工作(尽管它非常冗长).我遇到的问题是,正在执行的幕后模型验证与任何特定属性无关.上述模型中的一个例子是该Age属性需要是一个int.如果您尝试在表单上输入非整数值,则会出现以下(非本地化)消息时出错:

字段Age必须是数字.

如何对这些非属性验证消息进行本地化?

是否有可用的这些消息的完整列表,以便我可以确保它们都已本地化?

asp.net-mvc localization data-annotations

19
推荐指数
2
解决办法
1万
查看次数

MVC 3中DataAnnotations的整个默认错误消息列表在哪里

又一个MVC本地化问题......

我正在尝试使用本地化的资源文件本地化ASP.Net MVC 3应用程序,以按照建议在视图中显示文本.

像往常一样,问题是尝试从数据注释本地化默认错误消息时.

我知道你可以在每个属性中指定资源文件和密钥:

[Required(
ErrorMessageResourceType = typeof(CustomResourceManager), 
ErrorMessageResourceName = "ResourceKey")]
public string Username { get; set; }
Run Code Online (Sandbox Code Playgroud)

甚至,这是更好和首选,您可以覆盖默认消息,如下所示:ASP.NET MVC中的数据注释的默认资源,因此您可以保留属性,如:

[Required]
public string Username { get; set; }
Run Code Online (Sandbox Code Playgroud)

最后一种方法是我正在遵循的方法,并且它可以工作,但只有当您要覆盖的DataAnnotation具有ONE和ONLY ONE错误消息时,因为它总是查找与自定义资源文件中的属性相同的资源键(例如"Required"需要资源文件中的"RequiredAttribute"条目)

其他属性(如StringLength)具有多个错误消息,具体取决于您使用的可选参数.所以,如果你有一个像这样的模型:

public class Person
{
    [Required]
    [StringLengthLocalizedAttribute(10, MinimumLength = 5)]
    [Display(Name = "User name")]
    public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

错误消息是" 字段用户名必须是最小长度为5且最大长度为10的字符串. "

如果您将StringLength属性更改为:

    [StringLengthLocalizedAttribute(10)]
Run Code Online (Sandbox Code Playgroud)

错误消息更改为" 字段用户名必须是最大长度为10的字符串. "因此,在这种情况下,至少有2个默认错误消息要覆盖,@ kim-tranjan给出的解决方案失败.

我对此的部分解决方案是实现我自己的StringLength属性,如下所示:

public class StringLengthLocalizedAttribute : …
Run Code Online (Sandbox Code Playgroud)

localization data-annotations asp.net-mvc-3

17
推荐指数
2
解决办法
8199
查看次数

更改ASP.NET MVC 3中的默认ModelState错误消息

我将资源文件放在单独的程序集MyApp.Resources.dll中.我可以毫无问题地使用资源,但是当我想更改(本地化)默认验证消息时会出现问题:

"{0}字段是必需的." "值'{0}'对{1}无效."

解决方案 DefaultModelBinder.ResourceClassKey = "MyApp.Resources.Global";不起作用,因为它要求ResourceClassKey位于Web项目中的App_GlobalResources文件夹下.

应该为我解决什么?

问候

asp.net-mvc localization asp.net-mvc-3

8
推荐指数
2
解决办法
5092
查看次数