我有幾個基本模型,一個用於產品,一個用於類別。 如何在模型中將兩者關聯起來,以便在添加新產品時,我可以從DropDownList中選擇產品所屬的類別?我正在使用ASP.NET MVC 3 - 使用工具更新和Razor語法與HTML 5標記。帶代碼優先模型的MVC DropDown列表
我一直試圖讓這個工作沒有運氣,有人可以請指點我在正確的方向。
我有幾個基本模型,一個用於產品,一個用於類別。 如何在模型中將兩者關聯起來,以便在添加新產品時,我可以從DropDownList中選擇產品所屬的類別?我正在使用ASP.NET MVC 3 - 使用工具更新和Razor語法與HTML 5標記。帶代碼優先模型的MVC DropDown列表
我一直試圖讓這個工作沒有運氣,有人可以請指點我在正確的方向。
我得到它的工作...剛看了驢友11主題演講與斯科特Hansselmen。
工作代碼...
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
現在創建控制器時,MVC會產生對產品的catetgories一個下拉列表創建頁面。因此,您可以選擇產品所屬的類別。
產品實體需要有類別的屬性,就可以創建所有類別下拉,使其選擇所選擇的產品類別。
我知道有這這裏在網站上的例子,但是你可以容易找到與谷歌的幫助的例子。
假設你有兩個表是這樣的(和它們相關的類):
產品
類別
創建一個助手一個新的類,然後添加一個類型的方法IEnumerable < SelectListItem>返回一個
public class ListHelper
{
public static IEnumerable<SelectListItem> GetCategoryList()
{
using (SiteDataContext db = new SiteDataContext())
{
var list = from l in db.Categories()
orderby l.CategoryName
select new SelectListItem { Value = l.CategoryID.ToString(), Text = l.CategoryName };
return list.ToList();
}
}
}
:分類的(值,文字)的格式列表
在你看來,增加一個組合框使用此方法:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Category</legend>
<div class="editor-label">
Select a category:
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.CategoryID, Helpers.ListHelper.GetCategoryList())
</div>
</fieldset>
<fieldset>
<legend>Product</legend>
<div class="editor-label">
Product Name:
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ProductName)
@Html.ValidationMessageFor(model => model.ProductName)
</div>
...
</fieldset>
<p>
<input type="submit" value="Create" />
</p>
}
然後在你的行動後剛剛獲得的產品對象,並將其保存到數據庫:
[HttpPost]
public ActionResult Add(Product product)
{
if (ModelState.IsValid)
{
productService.InsertProduct(product);
productService.Save();
...
}
else
{
return View(product);
}
}