Как использовать свойства навигации объекта сущности в DropDownList в моем сильно типизированном ASP.NET MVC Создание и редактирование представлений? - PullRequest
4 голосов
/ 17 мая 2009

У меня есть модель данных сущностей с типами продуктов и семейств. Каждый продукт имеет одну семью.

Я использую эту модель с веб-сайтом ASP.NET MVC. Я хочу, чтобы Семейные DropDownLists были в Создании и Редактировании Представлений моего Контроллера Продукта.

Как использовать свойства навигации по объектам сущностей в DropDownList в моем строго типизированном ASP.NET MVC для создания и редактирования представлений?

Сбой следующего кода ...

ProductController:

// POST: /Product/Create

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Product p)
{
    db.AddToProduct(p);
    db.SaveChanges();
    return RedirectToAction("Index");
}

Создать вид:

<p>
    <label for="Family">Family:</label>
    <%= Html.DropDownList("Family", new SelectList((IEnumerable)ViewData["Families"], "Id", "Name"))%>
    <%= Html.ValidationMessage("Family", "*")%>
</p>

Могу ли я сделать это без использования FormCollection? Я бы предпочел, чтобы это был строго типизированный продукт.

Ответы [ 3 ]

1 голос
/ 20 мая 2009

В настоящее время вы не можете использовать внешние ключи для привязки. Вы должны вручную обновить отношение между продуктом и семьей. для этого вы должны добавить параметр familyid к вашему действию "post". И присвойте product. Family для семей. Где (

1 голос
/ 22 мая 2009

Правильно, поэтому вам понадобится что-то кроме вашего объекта, чтобы вернуть списки ссылок. Я вижу, что вы выбираете список выбора из пакета коллекции ViewData, но не видите, что он входит. Если он у вас есть в объекте ViewData или ViewModel, все будет в порядке.

В части о вашем внешнем ключе ... как сказал Алекс, текущая версия EF не поддерживает прямое представление внешних ключей как простых свойств. Я полагаю, что это должно измениться в 2.0, но пока что делаю поиск поддельных свойств внешнего ключа (так что пока я не буду публиковать ссылки). У меня это работает.

0 голосов
/ 18 мая 2009

Предполагая, что Product имеет свойство Families (или является объектом Linq с ограничением Foreing Key)

<%= Html.DropDownList("Family", new SelectList(model.Families, "Id", "Name"))%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...