Предположим, у вас есть две подобные таблицы (и связанные с ними классы):
Продукт
- ProductID
- CategoryID
- ProductName
- ....
Категория
- CategoryID
- Название категории
- ...
Создайте новый класс для помощника, затем добавьте метод типа IEnumerable , чтобы получить список категорий в формате (значение, текст):
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>
}
Тогда в вашем посте Action просто получите объект Product и сохраните его в базе данных:
[HttpPost]
public ActionResult Add(Product product)
{
if (ModelState.IsValid)
{
productService.InsertProduct(product);
productService.Save();
...
}
else
{
return View(product);
}
}