9

私は持っていdropdownlistforます:

 @Html.DropDownListFor(model => model.Item.Item.Status, new SelectList(@Model.AllStatus, "id", "Description"), new { id = "statusDropdown" })
 @Html.ValidationMessageFor(model => model.Item.Item.Status)

HTML 出力:

<select id="statusDropdown" class="valid" name="Item.Item.Status" data-val-required="The Status field is required." data-val-number="The field Status must be a number." data-val="true">
<option value="2">Completed by Admin</option>
<option value="3">General Error</option>
<option value="4">New</option>
</select>

このコードを更新して、デフォルトで選択されたオプションを設定するにはどうすればよいですか? 例えば

<option value="4" selected>New</option>

私は試した:

 @Html.DropDownListFor(model => model.Item.Item.Status, new SelectList(@Model.AllStatus, "id", "Description",@Model.SelectedStatusIndex), new { id = "statusDropdown" })

@Model.SelectedStatusIndex値は 4 ですが、デフォルト オプションを New に変更しません。

私も試しました:

@Html.DropDownListFor(model => model.SelectedStatusIndex, new SelectList(@Model.AllStatus, "id", "Description"), new { id = "statusDropdown" })
@Html.ValidationMessageFor(model => model.Item.Item.Status)

これにより、デフォルトのオプション「新規」が選択model.Item.Item.Statusされますが、HTTP POST のドロップダウンでは設定されません。

その他の詳細:

model.Item.Item.Statusは整数です。 @Model.AllStatus使用可能なすべてのステータス オプションを一覧表示する SQL テーブルです。

4

6 に答える 6

3

最終的に、thomasjaworskiの回答の変形を使用しました。

意見:

@Html.DropDownListFor(model => model.SelectedStatusIndex, new SelectList(@Model.StatusSelectList, "Value", "Text"), new { id = "statusDropdown" })

ViewModel コンストラクター

        StatusSelectList = AllStatus.Select(x =>
                                        new StatusSelectListItem
                                        {
                                            Text = x.Description,
                                            Value = x.id.ToString()
                                        }).ToList();

        this.SelectedStatusIndex = 2;//Default Status is New

HTTP POST のコントローラー

model.Item.Item.Statusドロップダウン自体とは別に設定しました:

model.Item.Item.Status = model.SelectedStatusIndex;

ドロップダウン セットは、最初の引数として渡された式の値であるためです。

@Html.DropDownListFor(model => model.SelectedStatusIndex, new SelectList(@Model.StatusSelectList, "Value", "Text"), new { id = "statusDropdown" })

この場合model.SelectedStatusIndex、ドロップダウンで設定されたものです。このコントローラーの実装は、私が難しいと思ったものです。

于 2013-06-20T18:41:12.547 に答える