2012-02-14 60 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; }