Проблема с MVC2 DropDownListFor, отображая только имя класса - PullRequest
3 голосов
/ 02 сентября 2010

Добрый день,

У меня есть эта проблема с Html.DropDownList, для которой я не могу сработать .. Это дает мне правильное количество опций, если я делаю точку останова в коде, гдедолжен отображать список, объект «SelectItemList» содержит элементы с правильными значениями, но фактический HTML, который он выдает, выглядит следующим образом:

<select id="Reason_ReasonId" name="Reason.ReasonId"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>

Модуль содержит это:

public SelectList ReasonList
{
    get
    {
        SelectList selectList;
        List<SelectListItem> selectItems;

        using (var db = new EscalationDataContext())
        {
            var reasons =
                db.Reasons
                .OrderBy(r => r.Reason1)
                .Select(r => new SelectListItem
                {
                    Value = r.ReasonId.ToString(),
                    Text = r.Reason1
                });

            selectItems = reasons.ToList();

            selectList = new SelectList(selectItems);
        }

        return selectList;
    }
}

Контроллер просто создает экземпляр по умолчанию и устанавливает значение по умолчанию:

    public ActionResult Create()
    {
        EscalationModel model = new EscalationModel
        {
            Reason = new Reason { ReasonId = new Guid("598c28c2-877a-44fa-9834-3241c5ee9355"), Reason1 = "Taken too long" },
            ActionedDate = DateTime.Now
        };

        return View(model);
    } 

Последнее, но не менее важное, представление:

<%: Html.DropDownListFor(m => m.Reason.ReasonId, Model.ReasonList) %>

Есть идеи, почему он ведет себя так?Как я уже сказал, в реальном коде (в представлении) у меня есть правильные значения, но ... я не нравлюсь ... Любая помощь будет принята с благодарностью, заранее спасибо!

1 Ответ

6 голосов
/ 02 сентября 2010

ОК. Кажется, вам нужно было указать, какая переменная в SelectListItem использовалась для «Значение», а какая для «Текст» ..

selectList = new SelectList(selectItems);

Стала ..

selectList = new SelectList(selectItems, "Value", "Text");

Который, кажется, добился цели!

...