ASP.Net MVC3 の初心者として、支援が必要な問題があります。(このスレッドの一番下にも質問があります。)
まず第一に、次のことが最善の方法であるかどうかわかりません。間違った方向に向かっている場合はお知らせください。部分ビューを使用して、ドロップダウン リストのルックアップを行いたいと考えています。場合によっては、検索が複数の場所で行われ、データがビューモデルの一部ではないこともあります。データは、アプリケーションのデータベースまたは Web サービスから取得されている可能性があります。一部のデータは起動時にロードされ、一部はフォームで選択された他の値に基づいています。
メイン ビューから子アクションを呼び出し、取得したデータを含む部分ビューを返します。ユーザーが選択肢を選択すると、選択した項目コードをメイン ビュー モデルに格納する方法がわかりません。
メイン フォームでは、アクションを呼び出します。
@model Apps.Model.ViewModels.AVMApplicationInfo
...
<div class="editor-label">
@Html.LabelFor(m => m.VMResidencyWTCS.DisplayState)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.VMResidencyWTCS.DisplayState)
@Html.DropDownListFor(m => m.VMResidencyWTCS.DisplayState, Apps.Model.Helpers.ResidencyStates.StateList)
@Html.ValidationMessageFor(m => m.VMResidencyWTCS.DisplayState)
</div>
@Html.Action("DisplayCounties", "PersonalInfo")
...
PersonalInfo コントローラーで:
[ChildActionOnly]
public ActionResult DisplayCounties()
{
IList<County> countiesDB = _db.Counties
.OrderBy(r => r.CountyDescr)
.Where(r => r.State == "WI"
&& r.Country == "USA")
.ToList();
//Create an instance of the county partial view model
VMCounty countyView = new VMCounty();
//Assign the available counties to the view model
countyView.AvailableCounties = new SelectList(countiesDB, "CountyCd", "CountyDescr");
return PartialView("_DisplayCounties", countyView);
}
_DisplayCounties 部分ビュー:
@model Apps.Model.ViewModels.VMCounty
<div class="editor-label">
@Html.LabelFor(m => m.CountyDescr)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.SelectedCountyCd, Model.AvailableCounties)
</div>
SelectedCountyCd をメイン フォーム ビュー モデル ( Apps.Model.ViewModels.AVMApplicationInfo ) のフィールドに割り当てるにはどうすればよいですか? 子アクション/部分ビューが呼び出されるタイミングの問題はありますか? つまり、起動時にロードされ、このメソッドを使用してルックアップのフィルターとしてユーザーの選択を含めることができますか? もしそうなら、どのようにして値を子コントローラーに渡すことができますか。ビューバッグ?