1

Я сделал это сто раз, но не уверен, что здесь происходит. У меня есть DropDownListFor, что я заселить в контроллере, как такУкажите значение по умолчанию для ASP MVC 3 DropDownListFor

 var mktsegments = from p in db.ChannelMarketSegment 
          where (p.ChannelCode != "0") 
          select p; 
     ViewBag.Pendist = new SelectList(mktsegments, "Pendist", "Pendist"); 

И в представлении, я пытаюсь установить значение по умолчанию этого выпадающего списка со значением Pendist.

EDIT: Pendist поле, которое существует в каждый элемент втягивается в mktsegments через Linq запроса.

<div class="M-editor-label"> 
     @Html.LabelFor(model => model.Pendist)<span class="req">*</span> 
    </div> 
    <div class="M-editor-field"> 
     @Html.DropDownListFor(model => model.Pendist, 
     (SelectList)ViewBag.Pendist, new { onchange = "ChangeChannel()" }) 
    </div> 

Однако, все это делает первое значение в списке как значение по умолчанию. Если я пытаюсь добавить model => model.Pendist или Model.Pendist в качестве третьего параметра Я в DropDownListFor как этот

 @Html.DropDownListFor(model => model.Pendist, 
     (SelectList)ViewBag.Pendist, model => model.Pendist, new { onchange = "ChangeChannel()" }) 

я либо получить следующие ошибки

(для model => model.Pendist)

Cannot convert lambda expression to type 'string' because it is not a delegate type

(для Model.Pendist)

'Model' confilcts with the declaration 'System.Web.Mcv.WebViewPage<TModel>.Model'

+0

Подходит ли 'Pendist' список объектов или значение, которое необходимо выбрать ??? – Jared

+0

'Pendist' - это поле, содержащееся в каждом элементе в' mktsegments', я добавлю эту информацию в сообщение. Thx – NealR

ответ

3

Вы сталкиваетесь с MVC ModelState. При создании списков Drow вниз убедитесь, что ваше свойство, содержащее выбранное значение, не называется тем же, что и ваш список объектов. Кроме того, не используйте лямбда для значения по умолчанию, а просто используйте элемент модели напрямую.

@Html.DropDownListFor(model => model.Pendist, (SelectList)ViewBag.PendistList, 
    Model.Pendist, new { onchange = "ChangeChannel()" }) 
+0

Я всегда забываю об этом ... спасибо! – NealR

Смежные вопросы