Проблема с MVC2 DropDownListFor, отображающая только имя класса

Добрый день,

У меня есть проблема с Html.DropDownListFor, которую я не могу решить. Она дает мне правильное количество опций, если я делаю точку останова в коде, где предполагается отображать список, объект "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) %>

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


person Robin    schedule 02.09.2010    source источник


Ответы (1)


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

selectList = new SelectList(selectItems);

Стал..

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

Что, кажется, сделало свое дело!

person Robin    schedule 02.09.2010