1

私はこれを何百回も行ってきましたが、ここで何が起こっているのかわかりません。私はDropDownListForそのようにコントローラーに入力する

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

ビューでは、このドロップダウンリストのデフォルト値を値で設定しようとしていPendistます。

編集: 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>

ただし、これはリストの最初の値をデフォルト値として設定するだけです。このように3番目のパラメーターとしてmodel => model.Pendistorを追加しようとするとModel.PendistDropDownListFor

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

4

1 に答える 1

3

MVC ModelState と競合しています。ドロー ダウン リストを作成するときは、選択した値を保持するプロパティが、オブジェクトのリストと同じ名前になっていないことを確認してください。また、デフォルト値にラムダを使用せず、モデル項目を直接使用してください。

@Html.DropDownListFor(model => model.Pendist, (SelectList)ViewBag.PendistList, 
    Model.Pendist, new { onchange = "ChangeChannel()" })
于 2013-05-01T17:55:53.230 に答える