14

この質問ASP.NET MVC DropDownListFor not selected value from model and answer を読みましたが、問題の解決策がわかりません。

これは私の見解です:

@foreach (var adjusterLanguages in Model.adjusterLanguages)
{
    <div class="editor-field row">
        @Html.DropDownListFor(model => Model.adjusterLanguages[i].languageID,
                              (SelectList)ViewBag.ForeignLanguages) 
        @Html.ValidationMessageFor(model =>Model.adjusterLanguages[i].languageID)
    </div>

    <div style="clear: left;"></div>

    i++;
}

モデル データが入力されていることを確認できます (コントローラーから)。

model.adjusterLanguages = adjLangs;

では、モデルがビューに送信されたときにアイテムを選択するにはどうすればよいですか?

生成された html は次のとおりです。

<div class="editor-field row">
    <select id="adjusterLanguages_0__languageID" name="adjusterLanguages[0].languageID"><option value="">--Select--
        </option>
        <option value="94c5be88-814e-4719-9784-587eb88aa975">Afrikanns</option>
        <option value="37b7bf71-7f4e-47c2-8b81-652b0d63dbcb">Albanian</option>
        <option value="c94d6d85-0ba2-47d7-932e-2a61feba37b3">Arabic</option>
        <!-- ... truncated for brevity ... -->
    </select> 
    <span class="field-validation-valid" data-valmsg-for="adjusterLanguages[0].languageID" data-valmsg-replace="true"></span>
</div>
<div style="clear: left;"></div>
<div class="editor-field row">
     <select id="adjusterLanguages_1__languageID" name="adjusterLanguages[1].languageID">
          <option value="">--Select--</option>
          <option value="94c5be88-814e-4719-9784-587eb88aa975">Afrikanns</option>
          <option value="37b7bf71-7f4e-47c2-8b81-652b0d63dbcb">Albanian</option>
          <option value="c94d6d85-0ba2-47d7-932e-2a61feba37b3">Arabic</option>
          <!-- ... truncated for brevity ... -->
     </select> 
     <span class="field-validation-valid" data-valmsg-for="adjusterLanguages[1].languageID" data-valmsg-replace="true"></span>
</div>
4

6 に答える 6

36

答えが見つかりました!ご協力いただきありがとうございます。コードを次のように変更すると、機能します。コードは、選択した値を指定するだけです。

@Html.DropDownListFor(
   model => Model.adjusterLanguages[i].languageID, 
   new SelectList(
       ViewBag.ForeignLanguages, "Value", "Text", 
       @Model.adjusterLanguages[i].languageID)) 
于 2013-05-28T19:29:06.293 に答える
1

私の意見では、 の 1 つの項目にプロパティを に設定するViewBag.ForeignLanguages必要があります。DropDownListFor メソッドは、ModelState に基づいてアイテムを選択します。ここに DropDownListFor メソッドのソース コードがあり、次のようなものがあります。Selectedtrue

object defaultValue = (allowMultiple) ? htmlHelper.GetModelStateValue(fullName, typeof(string[])) : htmlHelper.GetModelStateValue(fullName, typeof(string));

その値が null の場合、選択された値はSelectedプロパティから取得されます

于 2013-05-28T19:22:16.293 に答える