38
@Html.DropDownListFor(m => m.branch, CommonMethod.getBranch("",Model.branch), "--Select--", new { @multiple = "multiple" })

@Html.DropDownListFor(m => m.division, CommonMethod.getDivision(Model.branch,Model.division), "--Select--", new { @multiple = "multiple" })

DropDownListForのインスタンスが2つあります。Model.branchとModel.divisionの値を以前に保存したものについては、selectedをtrueに設定したいと思います。これらは、保存されたIDの文字列配列です

class CommonMethod
{
    public static List<SelectListItem> getDivision(string [] branchid , string [] selected)
    {
        DBEntities db = new DBEntities();
        List<SelectListItem> division = new List<SelectListItem>();
        foreach (var b in branchid)
            {
                var bid = Convert.ToByte(b);
                var div = (from d in db.Divisions where d.BranchID == bid select d).ToList();
                foreach (var d in div)
                {
                    division.Add(new SelectListItem { Selected = selected.Contains(d.DivisionID.ToString()), Text = d.Description, Value = d.DivisionID.ToString() });
                }
            }
        }

        return division;
    }
}

除算の戻り値は、モデル内の選択されたアイテムに対してtrueとして選択されていますが、ビュー側では選択されていません。

4

3 に答える 3

68

ListBoxForの代わりに使用してくださいDropDownListFor

@Html.ListBoxFor(m => m.branch, CommonMethod.getBranch("", Model.branch), "--Select--")

@Html.ListBoxFor(m => m.division, CommonMethod.getDivision(Model.branch, Model.division), "--Select--")

branchおよびプロパティはdivision、明らかに、選択した値を含むコレクションである必要があります。

そして、ビューモデルを使用して複数選択ドロップダウンを構築する適切な方法の完全な例:

public class MyViewModel
{
    public int[] SelectedValues { get; set; }
    public IEnumerable<SelectListItem> Values { get; set; }
}

これはコントローラーに入力されます。

public ActionResult Index()
{
    var model = new MyViewModel();

    // preselect items with values 2 and 4
    model.SelectedValues = new[] { 2, 4 };

    // the list of available values
    model.Values = new[]
    {
        new SelectListItem { Value = "1", Text = "item 1" },
        new SelectListItem { Value = "2", Text = "item 2" },
        new SelectListItem { Value = "3", Text = "item 3" },
        new SelectListItem { Value = "4", Text = "item 4" },
    };

    return View(model);
}

とビューで:

@model MyViewModel
...
@Html.ListBoxFor(x => x.SelectedValues, Model.Values)

SelectedValues値がプロパティの値と一致するアイテムを自動的に事前選択するのはHTMLヘルパーです。

于 2012-08-29T11:40:54.260 に答える
13

私にとってはそれはまたのために働く@Html.DropDownListFor

モデル:

public class MyViewModel
{
    public int[] SelectedValues { get; set; }
    public IEnumerable<SelectListItem> Values { get; set; }
}

コントローラ:

public ActionResult Index()
{
    var model = new MyViewModel();

    // the list of available values
    model.Values = new[]
    {
        new SelectListItem { Value = "2", Text = "2", Selected = true },
        new SelectListItem { Value = "3", Text = "3", Selected = true },
        new SelectListItem { Value = "6", Text = "6", Selected = true }
    };

    return View(model);
}

かみそり:

@Html.DropDownListFor(m => m.SelectedValues, Model.Values, new { multiple = "true" })

コントローラに送信されたSelectedValuesは次のようになります。

ここに画像の説明を入力してください ここに画像の説明を入力してください

于 2015-12-02T14:45:37.783 に答える
0

かなり古いスレッドですが、ここで他の回答をフォローした後にこの回答を投稿しましたが、残念ながら私にはうまくいきませんでした。それで、最近または近い将来ここでつまずいたかもしれない人々のために、以下は私のために働いたものです。

これが私を助けたものです

私にとってのキャッチはMultiSelectListクラスで、私はを使用してSelectListいました。

2012年または2015年の状況はわかりませんが、これらのヘルパーメソッド@Html.DropDownListFor@Html.ListBoxForヘルパーメソッドの両方が受け入れられるIEnumerable<SelectListItem>ようになったため、ランダムIEnumerableオブジェクトを渡して、これらのヘルパーメソッドが機能することを期待できません。

これらのヘルパーメソッドは、オブジェクトの作成中に選択した値を直接渡すことができるクラスのオブジェクトも受け入れるようにSelectListなりました。MultiSelectList

たとえば、以下のコードを参照して、複数選択ドロップダウンリストを作成した方法を確認してください。

@Html.DropDownListFor(model => @Model.arrSelectUsers, new MultiSelectList(Model.ListofUsersDTO, "Value", "Text", @Model.arrSelectUsers),
                                                    new
                                                    {
                                                        id = "_ddlUserList",
                                                        @class = "form-control multiselect-dropdown",
                                                        multiple = "true",
                                                        data_placeholder = "Select Users"
                                                    })
于 2020-01-24T16:06:51.627 に答える