我正在使用模型验证编写对象。 我的应用程序应该使用3种语言(英语,德语和捷克语)
我应该如何为验证模型获取适当的语言字符串?
捷克选项:
[DisplayName("Nazev")]
[StringLength(200,ErrorMessage="Nazev musi byt 10 az 200 znaku dlouhy",MinimumLength=10)]
[Column]
public string Name { get; set; }
英文选项:
[DisplayName("Name")]
[StringLength(200,ErrorMessage="Name has to be between 10 and 200",MinimumLength=10)]
[Column]
public string Name { get; set; }
答案 0 :(得分:3)
您必须使用LocalilizedDisplayName属性,请参阅此问题:DisplayName attribute from Resources?
[Required(ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "LastNameMandatory")]
[LocalizedDisplayName("LastName")]
public string RenterLastName { get; set; }
答案 1 :(得分:0)
如果您的解决方案允许您使用资源字符串,则LocalizedDisplayName可以正常工作。不幸的是,在我的项目中,我们有几种语言并且还在不断增长......翻译都保存在数据库中。
因此我们采用了
的方法然后我们导入命名空间并给它一个别名,实现的版本看起来像这样:
using tf = MyDating.Translation;
我们在ViewViewModel中执行:
[tf.DisplayName("Verify Password")]
[DataType(DataType.Password)]
[tf.Compare("Password")]
public string VerifyPassword
{
get;
set;
}
上面的CompareAttribute看起来像这样:
public class CompareAttribute : System.ComponentModel.DataAnnotations.CompareAttribute
{
public CompareAttribute(string otherProperty)
:base(otherProperty)
{
var tf = TranslatetionFactory.Current.GetSection("CompareAttribute");
var msg = tf.Get(this.ErrorMessageString);
ErrorMessage = msg;
}
}