2013-12-09 47 views
0

也許標題問題很簡單,但我遇到了另一個有關從另一個類中排除屬性的問題。如何從ASP.NET MVC的C#中的類中排除ID列?

據我所知,Bind(Exclude="ID")屬性只適用於類,而不是屬性。

讓我們假設我有以下型號:

public class AModel 
{ 
    public string Name { get; set; } 

    public Language Lang { get; set; } 
} 

以下的類DLL的一部分(不能改變裏面點兒什麼),我會告訴你他的定義

public class Language 
{ 
    public int ID { get; set; } 
    public string Eng { get; set; } 
    public string Fra { get; set; } 
    public string Ned { get; set; } 
    ... 
} 

如何使用@Html.EditorForModel()方法可能排除列ID不顯示在視圖中?

類似:

public class AModel 
{ 
    public string Name { get; set; } 

    [Exclude(ID)] 
    public Language Lang { get; set; } 
} 

感謝。

回答

0

要麼你可以使用自定義editor template爲類,也可以創建LanguageModel不具有ID,並映射Language對象到模型(Automapper是一個不錯的選擇)。

UPDATE(映射示例)

public class AModel 
{ 
    public string Name { get; set; } 
    public LanguageModel Lang { get; set; } 
} 

public class LanguageModel 
{ 
    // No ID 
    public string Eng { get; set; } 
    public string Fra { get; set; } 
    public string Ned { get; set; } 
    ... 
} 

創建語言模型和領域語言類之間的映射(你可以將其添加到Global.asax中

Mapper.CreateMap<Language, LanguageModel>(); 

因此性能有完全相同的名字,你不需要別的東西。當您AModel實例指定的語言,使用映射:

這裏
Language lang = GetLanuage(); 
var model = new AModel { 
    Name = "Foo", 
    Lang = Mapper.Map<LanguageModel>(lang) 
}; 

一個更benifit的是,你可以添加你需要不改變域類數據註解或其他的東西。

+0

如何映射語言?我試圖找到它,但沒有結果。謝謝 –

+0

@SnakeEyes我添加了映射樣本 –

+1

哇,很好。我會試試這個:) –