相关疑难解决方法(0)

ASP.NET MVC - 值类型的自定义验证消息

当我使用UpdateModel或TryUpdateModel时,MVC框架足够聪明,可以知道您是否尝试将null传入值类型(例如,用户忘记填写所需的Birth Day字段).

不幸的是,我不知道如何覆盖默认消息"需要一个值".在总结中更有意义的事情("请输入您的出生日").

必须有一种方法可以做到这一点(没有编写过多的解决方法),但我找不到它.有帮助吗?

编辑

此外,我想这也是无效转换的问题,例如BirthDay ="Hello".

validation asp.net-mvc

23
推荐指数
3
解决办法
3万
查看次数

在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万
查看次数

Asp.Net MVC:一些未本地化的默认错误消息?

我有一个完全本地化的网站,主要是法语/英语/德语.

现在,一切都很顺利,但我确实注意到asp.net MVC的一些错误消息的问题.

我的模型中有一个属性:

[Required]
[LocalizedDisplayName("PublicationDate", NameResourceType = typeof(LocalizationResources.Views.Composer.BaseInfoForm))]
public DateTime PublicationDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

LocalizedDisplayname是DisplayNameAttribute的扩展,它位于Resx文件中以获取正确的翻译

线程CurrentCulture和CurrentCultureUI在fr-FR中,因此消息应该以法语显示(就像我的[Required]属性一样,自动显示"Le champ Publication est requis").

但是在DateTime的情况下,如果我输入的东西不是日期,验证器只返回一个" The value 'asdfasdf' is not valid for Publication."所以:

  • 为什么MVC有时会以法语返回错误信息,有时用英语回复,同样的形式(我确切地说,这是默认的错误信息)
  • 如何通过指示诸如"La valeur {0} n'est pas une date valide pour le champ {1}"之类的文本来通用地替换此消息

非常感谢你

validation asp.net-mvc localization data-annotations

11
推荐指数
1
解决办法
9757
查看次数

在int溢出的情况下,"值{0}的本地化无效"

我已经通过指定读取了关于验证错误的本地化的答案DefaultModelBinder.ResourceClassKey,基本上是在int字段中输入字符串值时,或者在datetime字段中输入日期时间.

但是当我输入一个int字段的"111111111111111111111111111111"时,我得到System.OverflowException它看起来像"The value '{0}' is invalid.".

有没有办法以类似于其他MVC验证的方式本地化(将该消息转换为其他语言)验证错误?

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

6
推荐指数
1
解决办法
1189
查看次数