Asp.NET MVC Razor DropDownList и документ с табличной частью
Мне нужно сделать выпадающий список, который выбирает данные из связанной таблицы.
Я использовал пример из MSDN, но он не работает.
public ActionResult Create()
{
TypeItemsDropDownList();
return View(new Item());
}
//
// POST: /Item/Create
[HttpPost]
public ActionResult Create([Bind(Include = "idItem,nameItem,priceItem,quantity,inStock,descrItem,idTypeItem")]Item item)
{
try
{
if (ModelState.IsValid)
{
iac.StoreNewItem(item);
return RedirectToAction("Index");
}
}
catch (System.Data.DataException)
{
//Log the error (add a variable name after DataException)
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
TypeItemsDropDownList(item.idTypeItem);
return View(item);
}
private void TypeItemsDropDownList(object selectedTypeItem = null)
{
cabproddbEntities db = new cabproddbEntities();
var typeQuery = from d in db.TypeItem
orderby d.nameTypeItem
select d;
ViewBag.idTypeItem = new SelectList(typeQuery, "idTypeItem", "nameTypeItem", selectedTypeItem);
}
Ошибка происходит здесь:
<div class="editor-label">
<label class="control-label col-md-2" for="idTypeItem">Тип продукции</label>
</div>
<div class="editor-field">
@Html.DropDownList("idTypeItem", String.Empty)
@Html.ValidationMessageFor(model => model.idTypeItem)
</div>
на этой линии: @Html.DropDownList("idTypeItem", String.Empty)
Стол TypeItem
есть данные.
Брошенное исключение: System.Data.EntityCommandExecutionException
со следующими деталями:
Типы данных text, ntext и image нельзя сравнивать или сортировать, кроме случаев использования оператора IS NULL или LIKE.
1 ответ
Решение
Ваша проблема в том, что вы не связываете SelectList
в раскрывающемся списке. Использовать DropDownListFor()
помощник и ссылки на ваш список выбора в нем. Как показано ниже.
Ваши соглашения об именах также немного отличаются, и это может привести вас в замешательство.
@Html.DropDownListFor(m => Model.selectedItem, ViewBag.idTypeItem)