我有一个名为MyController的MVC控制器,其中包含一个名为MyAction的动作。另一方面,我有一个名为MyModel的模型,所有这些类都在一个名为Portal.Website(Asp.net MVC3应用程序)的项目中,我将其用作通用网站,并存储我将在其中添加的自定义网站的常用功能。将来
另一方面,我有另一个网站项目,其中引用了名为Portal.Website.MyCustomWebsite的Portal.Website项目。
这是通用网站部分中的viewmodel MyModel.cs:
namespace Portal.Website
{
public class MyModel
{
[Required(ErrorMessage="The field Name is required.")]
[Display("MyPropertyOriginal")]
public virtual string Name{get;set;}
}
}
这是通用网站部分中的控制器和操作:
namespace Portal.Website
{
public class MyController: Controller
{
[HttpPost]
public ActionResult MyAction(MyModel model)
{
if(Model.IsValid)
....
//My issue: Im getting the error message in english, not the overridden one.
}
}
}
这是我在自定义部分中创建的视图模型:
namespace Portal.Website.MyCustomWebsite
{
public class MyModel: MyModel
{
[Required(ErrorMessage="My error message in other language.")]
[Display("MyPropertyOverriden")]
public override string Name{get;set;}
}
}
我的问题:
我想覆盖Required属性的ErrorMessage。出于这个原因,我在自定义项目中创建了一个新模型。另一方面,我想使用已在我的公共部分中定义的Controller / Action(MyController / MyAction)。
你知道这是否可能吗?我只得到了必需属性的问题,但显示一个它的工作完美。
提前致谢。 映入眼帘。 何。
答案 0 :(得分:1)
MVC3对I18N(国际化)的支持比它的前辈更好 - 您可以传递RequiredAttribute
资源类的类型和资源键,错误消息将以最合适的语言显示:
[Required(ErrorMessageResourceType = typeof(MyResources), ErrorMessageResourceName = "ResourceKey")]
public override string Name { get; set; }
答案 1 :(得分:1)
您可能需要查看本文,其中提出了两种可能的解决方案:
http://www.codeproject.com/Articles/130586/Simplified-localization-for-DataAnnotations
我发现用自定义逻辑重新创建一些DataAnnotation类更有意义。