私はASP.NET MVCアプリケーションで作業しています。このアプリケーションでは、私はカスタムオブジェクトの上にチェックボックスのリストを作成しようとしています。カスタムオブジェクトは、次のようになります。ASP.NET MVC - チェックボックスのリストID、名前、および値
:このように見えること、プロファイルと呼ばれるアクションで、私は、コントローラを持ってpublic class MyModel
{
public IEnumerable<ListItem<Guid, string, bool>> Options { get; set; }
}
:
public class ListItem<TId, TLabel, TIsChecked>
{
private TId id;
private TLabel label;
private TIsChecked isChecked;
public ListItem(TId id, TLabel label, TIsChecked isChecked)
{
this.id = id;
this.label = label;
this.isChecked = isChecked;
}
public TId Id
{
get { return id; }
}
public TLabel Label
{
get { return label; }
}
public TIsChecked IsChecked
{
get { return isChecked; }
}
}
私はこのようになりますモデルを持っています
[HttpGet]
public ActionResult Profile()
{
var model = new MyModel();
return View(model);
}
[HttpPost]
public ActionResult Profile(MyModel model)
{
return View(model);
}
私はこのように私のかみそりビューで私のチェックボックスオプションをレンダリングしています:
@foreach (var option in Model.Options)
{
<div class="form-group">
<div class="checkbox">
<label>
<input name="Options" value="@option.Id" type="checkbox" @((option.IsChecked == true) ? "checked" : string.Empty)> @option.Label
</label>
</div>
</div>
}
オプションがうまく表示されます。しかし、フォームを保存すると、最初に選択されたチェックボックスIDだけが返されるように見えます。私はどのようにa)適切にチェックボックスリストのHTMLをレンダリングし、b)適切にサーバーにポストバックするための値を取得するか分からない。私はブログ記事で他の例を見たことがありますが、私の見解ではかなり多くのHTMLがあります。そのため、私はチェックボックスの値がクライアント側でレンダリングされ、ASP.NET MVCのサーバーにポストバックされる方法を把握しようとしています。