2014-02-28 17 views
0

比方說,我有這樣的模式:在ASP.NET MVC中,如何爲相關實體創建下拉列表,而不是外鍵屬性?

public class Category { 
    public long Id { get; set; } 
    public string Name { get; set; } 
} 

public class Item { 
    public long Id { get; set; } 
    public string Name { get; set; } 
    //public long CategoryId { get; set; } 
    public Category Category { get; set; } 
} 

我想我的網頁上編輯一個項目,我有一個類別列表。

我可以很容易地創建爲的CategoryId屬性下拉。但我需要映射整個類別實體,而不是隻有一個外鍵。有沒有一種傳統的,通用的方式來做到這一點?

回答

1

不,因爲您無法將選項的value屬性設置爲整個實體,更不用說以模型綁定者可識別的格式將其返回。處理這個問題的正確方法是您發佈到外鍵屬性然後保存。

如果您的問題是您沒有外鍵屬性(因爲您依靠EF慣例爲您創建基於Category屬性),那麼您最好的選擇是在您的視圖中使用視圖模型而不是實際的實體。在該視圖模型中,您可以包含CategoryId屬性並將其用於您的下拉菜單。然後,一旦您在POST操作中收回模型,就使用該id來查詢數據庫並檢索實際的對象。然後,您將實體上的Category設置爲該對象並保存。

相關問題