0

DropDownList の選択した値を新しいコントローラー メソッドに渡そうとしています。ただし、コントローラーでleagueKeyは、常に null が返されます。ドロップダウン リストに値が入力されています。

コントローラーに変更new { leagueKey = Model.SelectedLeagueKey}するとnew {leagueKey = "test"}、「テスト」値が正しく受信されます。DropDownList が、選択した値を にバインドしていないようModel.SelectedLeagueKeyです。

モデル

public Dictionary<string, string> Leagues { get; set; }
public string SelectedLeagueKey { get; set; }

意見

<div class="edit-field">
    @Html.DropDownListFor(model => model.SelectedLeagueKey, new SelectList(Model.Leagues, "Key", "Value", Model.SelectedLeagueKey),"Select League")
</div>
    @Html.ActionLink("Select League", "AddTeam", "Team", new { leagueKey =  Model.SelectedLeagueKey}, null)

コントローラ

public ActionResult AddTeam(LTEDContext context, string leagueKey)
    {
        //Do something with leagueKey here
        return View();
    }
4

1 に答える 1

3

あなたのビューは、SelectedLeagueKey パラメーターに従ってあなたに送信します

<div class="edit-field">
   @Html.DropDownListFor(model => model.SelectedLeagueKey, new SelectList(Model.Leagues, "Key", "Value", Model.SelectedLeagueKey),"Select League")
</div>

ビューで次のコードを使用してみてください。

@using (Html.BeginForm("AddTeam", "Team")) {    
<div class="edit-field">
   @Html.DropDownListFor(model => model.SelectedLeagueKey, new SelectList(Model.Leagues, "Key", "Value", Model.SelectedLeagueKey),"Select League")
</div>
<submit type="submit"/>

}

そしてコントローラーの次のもの:

public ActionResult AddTeam(LTEDContext context, string SelectedLeagueKey)
{
    //Do something with leagueKey here
    return View();
}
于 2012-12-18T02:31:10.247 に答える