0

2 つのドロップダウンから選択したキーにアクセスし、キーをパラメーターとしてコントローラー アクションを呼び出します。

私のMVCビューでは、次のコードがあります:

@model Test.Models.LoginViewModel
<p>
    Database @Html.DropDownListFor(x => x.SelectedDatabase, Model.DatabaseList, "-- Select an Item --", new {@id="databaseDD", @name="databaseDD"})
</p>
<p>
    Language @Html.DropDownListFor(x => x.SelectedLanguage, Model.LanguageList, "-- Select an Item --", new {@id="languageDD", @name="languageDD"})
</p>
<p>
    @using (Html.BeginForm("LoginToService", "Home", new { databaseKey = Model.SelectedDatabase, languageKey = Model.SelectedLanguage }, FormMethod.Post, new { target = "_self" }))
    {
        <input id="login" type="submit" name="login" value="Login" />
    }
</p>

問題は、DropDown Selection が変更されたときにプロパティ Model.SelectedDatabase および Model.SelectedLanguage が設定されないことです。選択したキーにアクセスしてパラメータとして使用するにはどうすればよいですか?

4

1 に答える 1

0

コントローラーでは、次のような事前定義されたクラスを使用する必要があります。

 public class DropDownItem
    {

        public int Key { get; set; }
        public string Value{ get; set; }
    }

バックエンド メソッドを使用して、次のような目的のフィールドを DropDownItem にマップします。

    public SelectList FooListUsed()
    {
     List<DropDownItem> result =  from item in ListOfDataBaseTableElements
               select new DropDownItem{
                    Key = item.id,
                    Value = item.name
                     }
     result.Insert(0, new DropDownItem{ Key = 0, Value = "Select All" });
     return new SelectList(result, "Key", "Value"); //this mapping will take care of your selected value issue

Viewbag または Model を介してクエリの結果をビューに渡します。この例ではビューバッグを使用します。ViewBag.FooList=FooListUsed();

最後のステップ ... DropdownList を使用します。

@Html.DropDownListFor(model => model.SelectedDatabase,(IEnumerable<SelectListItem>)ViewBag.FooList)
于 2013-03-05T14:15:37.697 に答える