2012-10-30 186 views
0

我有一個webforms項目,我在ASP.NET 4.5上使用新的模型綁定。我在我的頁面上有一個強類型的FormView,它包含一個DropDownList,它允許用戶選擇一個相關的實體(想象產品 - >類別)。Webforms模型綁定和複雜類型

有沒有一種方法來設置它,以便在我的InsertMethod上,我可以直接訪問相關的實體(例如Product.Category)?我需要檢查相關實體上的一些驗證規則,而我發現要做的唯一方法是設置我的DropDownList以返回相關記錄的Id,然後從數據庫中獲取它。這似乎相當低效。

編輯:該死的,沒人啊!那麼,這就是你成爲新技術的早期採用者所得到的結果! :D

回答

0

我對MVC有同樣的問題,我發現的最好的解決方案是在我的模型上使用ForeignKey數據註釋,這樣我可以只插入相關對象的ID並在稍後檢索對象。這裏有一個例子:

public class Product { 
    public int ProductId { get; set; } 
    public string Name { get; set; } 
    // Add this field so I can add the entity to the database using 
    // category id only, no need to instantiate the object 
    public int CategoryId { get; set; } 

    // Map this reference to the field above using the ForeignKey annotation 
    [ForeignKey("CategoryId")] 
    public virtual Category Category { get; set; } 
} 

public class Category { 
    public int CategoryId { get; set; } 
    public string Name { get; set; } 
} 

現在,它一直年齡,因爲我最後一次使用的WebForms,所以我真的不知道該怎麼類別列表綁定到DropDownList的,也許是這樣的:

<asp:DropDownList ID="CategoryId" SelectMethod="GetCategories" runat="server" /> 

也許當你的產品返回到你的創建或更新方法時,它會隨着CategoryId屬性的正確歸屬而出現,然後你所要做的就是保存EF的上下文。祝你好運。