1

モデルの値として「IT」と「HR」を投稿する次のものがあります。IT と HR をラベルとして、コントローラーへの値として 0 と 1 が必要です。

@Html.DropDownList("DepartmentId", new SelectList(new[] { "IT", "HR" }))

ビューを取得するときに、モデルの部門 ID の値と一致する値をドロップダウンで事前に選択するにはどうすればよいですか。そのため、項目の Id が HR の場合、ドロップダウンにはすでに HR が選択されているはずであり、ユーザーはそれを IT に変更でき、そのオプションを保存できます。

何か助けて?? モデルを変更したくないことに注意してください。

ANSWER Terry Nederveld 氏にこの回答を提供していただき、誠に ありがとうござい ます。

 @Html.DropDownList("DepartmentId", new SelectList(new[] { new KeyValuePair<string, int>("IT", 1), new KeyValuePair<string, int>("HR", 2) }, "Value", "Key", (Model.ServiceItem.DepartmentId.Equals(1) ? 1 : 2)))
4

3 に答える 3

3

Assuming you're using MVC3/4, the easiest way is to add a 'Departments' property to your model. Then you can do this in your view:

@Html.DropDownListFor(m => m.Department.DepartmentId, Model.Departments) 

With your model looking like this:

public class ViewModel
{
    public List<SelectListItem> Departments
    {
        get;
        private set;
    }

    public Department Department { get; set; }


    public ViewModel()
    {
        Departments = new List<SelectListItem>();
        //Assume you'll be getting the list from db here?
        Departments .Add(new SelectListItem { Text = "HR", Value = "IdValueHere" });
        Departments .Add(new SelectListItem { Text = "IT", Value = "IdValueHere" });
    }
}

This takes care of selecting the correct item.

于 2012-05-15T16:08:40.613 に答える
2

David Masters のアプローチは、私が通常使用するものです。ただし、モデルを変更したくないためです。これが機能する1つのアプローチです。

@Html.DropDownList("Departments", new SelectList(new [] { new KeyValuePair<string, int>( "IT", 0 ), new KeyValuePair<string, int>( "HR", 1 )},"Value", "Key")) 
于 2012-05-15T16:50:04.270 に答える
0

解決策については、eudaimos からの回答 (回答の約 50%) を参照してください

于 2012-05-15T16:04:02.783 に答える