0
我正在研究ASP.NET MVC应用程序。在这个应用程序中,我正在创建一个自定义对象顶部的复选框列表。自定义对象是这样的:ASP.NET MVC - CheckBox列表ID,名称和值
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; }
}
}
我有一个模型,看起来像这样:
public class MyModel
{
public IEnumerable<ListItem<Guid, string, bool>> Options { get; set; }
}
然后我有一个控制器,一个名为档案的动作,看起来像这样:
[HttpGet]
public ActionResult Profile()
{
var model = new MyModel();
return View(model);
}
[HttpPost]
public ActionResult Profile(MyModel model)
{
return View(model);
}
我渲染我的复选框选项在我的Razor视图这样的:
@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中的服务器。