1

나는이 작업을 수 백 번했지만 확실하지는 않습니다. 나는 그렇게ASP MVC 3의 기본값 지정 DropDownListFor

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

처럼 그리고보기에서 컨트롤러에 채 웁니다 DropDownListFor, 내가 Pendist 값이 드롭 다운 목록의 기본 값을 설정하려고 시도하고있다.

편집 : Pendist 각 항목은 Linq 쿼리를 통해 mktsegments에 들어갔습니다에 존재하는 필드입니다.

<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> 

그러나이 모든 것은 목록의 첫 번째 값을 기본값으로 설정합니다. 나는이

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

처럼 DropDownListFor에서 세 번째 있었던 파라미터로 model => model.Pendist 또는 Model.Pendist을 추가하려고하면 I 중 다음과 같은 오류가 (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와 충돌합니다. 드롭 다운 목록을 만들 때 선택한 값을 보유하는 속성이 객체 목록과 동일한 이름으로 지정되지 않았는지 확인하십시오. 또한 기본값으로 람다를 사용하지 말고 모델 항목을 직접 사용하십시오.

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

나는 항상 이것을 잊는다. .. 고마워! – NealR