C# 仅将多个对象的选定复选框提交给MVC控制器

C# 仅将多个对象的选定复选框提交给MVC控制器,c#,asp.net-mvc,forms,C#,Asp.net Mvc,Forms,当我有以下表格时: <input type="checkbox" name="modules" value="1" /> <input type="checkbox" name="modules" value="2" /> <input type="checkbox" name="modules" value="3" /> 但是,当上面的表单被包装到for循环中时,会发生什么呢 @for (int i = 0; i < cart.Events.Coun

当我有以下表格时:

<input type="checkbox" name="modules" value="1" />
<input type="checkbox" name="modules" value="2" />
<input type="checkbox" name="modules" value="3" />
但是,当上面的表单被包装到for循环中时,会发生什么呢

@for (int i = 0; i < cart.Events.Count; i++)
{
    <h1>@cart.Events[i].Name</h1>
    <input type="checkbox" name="modules" value="1" />
    <input type="checkbox" name="modules" value="2" />
    <input type="checkbox" name="modules" value="3" />
}
[HttpPost]
public ActionResult Submit(TestObject modules)
{

}

public class TestObject
{
    public string[] modules { get; set; }
}
这将无法正常工作,因为MVC不知道如何将表单数据绑定到对象。我只想发送所选的值,因为并不是说模块复选框的计数总是相同的


如何解决此问题?

所有复选框都有相同的名称,您可以通过以下方式自定义名称:@(“模块”+cart.Events[i].name)。

您的模型需要一个属性,例如
bool IsSelected
,以及一个值属性,例如
int value
-参考示例您还可以添加TestObject的代码吗
[HttpPost]
public ActionResult Submit(TestObject modules)
{

}

public class TestObject
{
    public string[] modules { get; set; }
}