2012-02-14 31 views
0

我有一个称为MyController的MVC控制器,其名为MyAction。另一方面,我有一个名为MyModel的模型,所有这些类都在一个名为Portal.Website(Asp.net MVC3应用程序)的项目中,我将其用作通用网站,并存储定制网站的常用功能,我将在未来。从基本模型覆盖验证属性

另一方面,我有另一个网站项目,引用了Portal.Website项目,名为Portal.Website.MyCustomWebsite。

这是通用的网站部分视图模型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)。

你知道这是可能吗?我只能通过Required属性获得问题,但使用Display它的工作是完美的。

在此先感谢。 迎接。 何塞。

回答

1

MVC3自带的I18N(国际化)比它的前辈更好的支持 - 您可以通过RequiredAttribute你的资源类的类型和资源键和错误信息将显示在哪个语言是最合适的:

[Required(ErrorMessageResourceType = typeof(MyResources), ErrorMessageResourceName = "ResourceKey")] 
public override string Name { get; set; }