仅为多个对象提交选定的复选框到MVC控制器

时间:2017-02-23 09:03:49

标签: 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" />

这将正确发送给以下MVC控制器:

[HttpPost]
public ActionResult Submit(string[] modules)
{

}

但是当上面的表单被包装成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不知道如何将表单数据绑定到对象。我只想发送选定的值,因为它没有说模块复选框的数量总是相同的。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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