ヘルパーがどのようListBoxFor
に定義されているかを示していないため、ここでは推測することしかできません。FormCollection
これは、私が推奨しない使用法について話していると言われています。私がお勧めするのは、ビューモデルを使用することです。それでは、例を見てみましょう:
モデル:
public class MyViewModel
{
[Required(ErrorMessage = "Please select at least one item")]
public string[] SelectedItemIds { get; set; }
public SelectListItem[] Items
{
get
{
return new[]
{
new SelectListItem { Value = "1", Text = "Item 1" },
new SelectListItem { Value = "2", Text = "Item 2" },
new SelectListItem { Value = "3", Text = "Item 3" },
};
}
}
}
コントローラ:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
SelectedItemIds = new[] { "1", "3" }
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (ModelState.IsValid)
{
// The model is valid we know that the user selected
// at least one item => model.SelectedItemIds won't be null
// Do some processing ...
}
return View(model);
}
}
意見:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.ListBoxFor(
x => x.SelectedItemIds,
new SelectList(Model.Items, "Value", "Text")
)
@Html.ValidationMessageFor(x => x.SelectedItemIds)
<input type="submit" value="OK" />
}