Помогите мне создать выпадающий список всех Jefes в моей базе данных! - PullRequest
0 голосов
/ 28 июля 2010

У меня следующая структура таблицы:

alt text

Я пытаюсь заполнить комбинированный список всех Jefes при редактировании области. Это означает, что я могу изменить, кто отвечает за область.

Вот мой код AreaController.cs:

public ActionResult Edit(int id)
        {
            Area area = areaRepository.GetArea(id);
            JefeRepository jefe = new JefeRepository();           
            ViewData["Jefes"] = new SelectList(jefe.FindAllJefes(), "Nombre", "Nombre");
            return View(area);
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection formValues)
        {
            Area area = areaRepository.GetArea(id);

            try
            {
                UpdateModel(area);
                areaRepository.Save();

                return RedirectToAction("Details", new { id = area.ID });

            }
            catch (Exception)
            {
                foreach (var issue in area.GetRuleViolations())
                {
                    ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                }
                return View(area);
            }
        }

Обратите внимание, что .FindAllJefes () возвращает коллекцию IQueryable <>.

Теперь в моем файле Edit.aspx есть следующее:

<fieldset>
            <legend>Informacion Detallada de Area | <%: Model.Nombre %></legend>

            <div class="editor-label">
                <%: Html.LabelFor(model => model.Nombre) %>
            </div>
            <div class="editor-field">
                <%: Html.TextBoxFor(model => model.Nombre) %>
                <%: Html.ValidationMessageFor(model => model.Nombre) %>
            </div>

            <div class="editor-label">
                <%: Html.LabelFor(model => model.IDJefe) %>
            </div>
            <div class="editor-field">
                <%: Html.DropDownList("IDJefe", (SelectList)ViewData["Jefes"], "(Select Jefe)") %>                
                <%: Html.ValidationMessageFor(model => model.IDJefe) %>
            </div>

            <p>
                <input type="submit" value="Save" />
            </p>
        </fieldset>

Я получаю эту ошибку:

Нет элемента типа ViewData «IEnumerable», который имеет ключ 'IDJefe'.

Ответы [ 2 ]

0 голосов
/ 28 июля 2010

Не зная, как устроены ваши пользовательские классы, это сложный вопрос, но просто рискну предположить:

ViewData["Jefes"] = new SelectList(jefe.FindAllJefes(), "Nombre", "Nombre")

Я не знаю, как настроен ваш класс SelectList, но (возможно)вы используете "Nombre" в качестве идентификатора и отображаемого значения (???).

Итак, ваш список выбора ищет ключ с именем "IDJefe", а не находит его, потому что вы использовали "Nombre"дважды.

    <div class="editor-field">
        <%: Html.DropDownList("IDJefe", (SelectList)ViewData["Jefes"], "(Select Jefe)") %>                
        <%: Html.ValidationMessageFor(model => model.IDJefe) %>
    </div>
0 голосов
/ 28 июля 2010

за MSDN :

new SelectList(jefe.FindAllJefes(), "Nombre", "Nombre");

jefe.FindAllJefes() должен быть IEnumerable при передаче в ctor SelectList. Ваш аргумент, который должен читаться как jefe.FindAllJefes().ToList()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...