2010-04-28 68 views
0

我想知道我怎樣才能得到一個屬性好像是實體,例如:如何獲取作爲Asp.Net Mvc的實體的實體的屬性?

我的模型:

public class Product { 

    public int Id { get; set; } 
    public string Name { get; set; } 
    public Category Category { get; set; } 

} 

查看:

Name: <%=Html.TextBoxFor(x => x.Name) %> 
Category: <%= Html.DropDownList("Category", IEnumerable<SelectListItem>)ViewData["Categories"]) %> 

控制器:

public ActionResult Save(Product product) 
{ 
    /// produtct.Category ??? 
} 

以及類別屬性如何?它是由視圖填充? ASP.Net MVC知道如何通過ID填充這個對象?

謝謝!

+0

您可能只會回傳分類ID。您需要知道服務器端如何從持久層獲取正確的Category實例。 – Ryan 2010-04-28 16:37:47

回答

2

這是直接綁定到實體的原因之一。考慮

public class ProductForm { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string CategoryId { get; set; } 
} 

public ActionResult Save(ProductForm form) 
{ 
    var product = new Product 
    { 
     Id = form.Id, 
     Name = form.Name, 
     Category = database.GetCategory(form.CategoryId) 
    }; 
} 

在視圖模型的情況下,上面,它可能是確定以使用自定義模型粘合劑,以自動標識從數據庫中獲取的實體。有關示例實現(位於S#arp Architecture),請參閱here,該示例實現將ID與數據庫中的實體綁定。但我認爲現在你最好用上面的簡單實現。您可以使用AutoMapper來簡化form-> entity映射。

+0

我也將類別列表放入視圖模型,而不是在ViewData中。 在窗體的獲取操作中,填充包含所有類別的視圖模型 – Mac 2010-04-29 00:08:49

相關問題