モデルにネストされたオブジェクトにプロパティが定義されている場合、CheckBoxForは限定されません。CheckboxForネストされたオブジェクトとバインドしない
ここは例です。 List<Star>
プロパティを含むSearchOptions
モデルがあります。
@using (Html.BeginForm("Do", "Home"))
{
<fieldset>
<legend>@MVC3TestApplication.Resources.Home.Index.Search</legend>
@{
foreach (Star s in Model.Stars)
{
@Html.CheckBoxFor(m => s.IsSelected)
<label>@s.Name</label>
}}
</fieldset>
<input type=submit value="Invia" />
}
(関連部分:Stars
性質上(SearchOptions
の)私の強く型付けされたビューで
public class SearchOptions
{
public SearchOptions()
{
// Default values
Stars = new List<Star>()
{
new Star() {Number=1, Name=Resources.Home.Index.Star1,
IsSelected=false},
new Star() {Number=2, Name=Resources.Home.Index.Star2,
IsSelected=false},
new Star() {Number=3, Name=Resources.Home.Index.Star3,
IsSelected=true},
new Star() {Number=4, Name=Resources.Home.Index.Star4,
IsSelected=true},
new Star() {Number=5, Name=Resources.Home.Index.Star5,
IsSelected=true},
};
}
public List<Star> Stars { get; set; }
}
iループ:各Star
は番号、名前と区切られるべきbool
性質を持っていますof)のコントローラは:
public ActionResult SearchOptions()
{
return View(new SearchOptions());
}
[HttpPost]
public ActionResult Do(SearchOptions s)
{
// Do some stuff
return View("SearchOptions", s);
}
コードが正常に表示されます - 実際何が間違っていますか?あなたは 'View(model)'を通してモデルを渡していますか? – Buildstarted
'Do(SearchOptions s)'は、すべてのチェックボックスをオンまたはオフにしても 's'に古い(デフォルト)値があることを示します。助けてくれてありがとう、 – gremo
ああ。その場合、理由はネストされたプロパティのためです。 'CheckBoxFor()'の出力は 'Model.Star []。IsSelected'ではなく' s.IsSelected'に名前の値を設定します。私は私が何をすることができるか、誰かが私の前に答えを投稿します参照してください:) – Buildstarted