以下の設定では、すべての国籍がサーバーに戻されます。リスト全体は気にせず、選択した値だけを気にします。選択した国籍のみがモデルの残りの部分と共にポストバックされるようにコードを変更するにはどうすればよいですか?
モデル:
// SearchCriteria model
public class SearchCriteria()
{
public SearchCriteria()
{
Nationalities = new List<SelectListItem>();
Nationalities.Add(new SelectListItem { Text = "Any Nationality", Value = "Any Nationality", Selected = true });
Nationalities.Add(new SelectListItem { Text = "United States", Value = "United States", Selected = false });
Nationalities.Add(new SelectListItem { Text = "Japanese", Value = "Japanese", Selected = false });
Nationalities.Add(new SelectListItem { Text = "Mexican", Value = "Mexican", Selected = false });
Nationalities.Add(new SelectListItem { Text = "Canadidan", Value = "Canadidan", Selected = false });
Nationalities.Add(new SelectListItem { Text = "Chinese", Value = "Chinese", Selected = false });
}
public string Name {get;set;}
public string Nationality { get; set; }
public List<SelectListItem> Nationalities { get; set; }
}
コントローラ:
[HttpPost]
public ActionResult Find(SearchCriteria model)
{
try
{
// find it
return View(model);
}
catch
{
return View(model);
}
}
意見:
@Html.Label("Name:");
@Html.TextBoxFor(model => model.Name);
@Html.Label("Nationality:");
@Html.DropDownListFor(model => model.Nationality, Model.Nationalities);