C# 使用数组将多个参数从视图传递到控制器

C# 使用数组将多个参数从视图传递到控制器,c#,asp.net-mvc,razor,asp.net-mvc-5,html.beginform,C#,Asp.net Mvc,Razor,Asp.net Mvc 5,Html.beginform,我想在不使用模型的情况下,在我的控制器上发布55到100个项目,从视图上看可能是假的,也可能是真的。这是我在Razor视图中的代码: @using(Html.BeginForm( "User","User",FormMethod.Post,new{enctype="multipart/form-data"})) { <input type="checkbox" name="U1">Choice one</input> <input type="ch

我想在不使用模型的情况下,在我的控制器上发布55到100个项目,从视图上看可能是假的,也可能是真的。这是我在Razor视图中的代码:

@using(Html.BeginForm( "User","User",FormMethod.Post,new{enctype="multipart/form-data"}))
{

    <input type="checkbox" name="U1">Choice one</input>
    <input type="checkbox" name="U2">Choice two</input>
    <input type="checkbox" name="U3">Choice three</input>
    <input type="checkbox" name="U4">Choice four</input>

....

<input type="checkbox" name="U55">Choice fifty five</input>

<button type="submit">Send</button>
                               }
@使用(Html.BeginForm(“User”,“User”,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
选择一
选择二
选择三
选择四
....
选择55
发送
}
控制器:

[HttpPost]
public async Task<ActionResult> User(Array....)
{
return view();}
[HttpPost]
公共异步任务用户(阵列…)
{
返回视图();}

如何使用数组将所有参数(复选框)发送到控制器。我欣赏你们所有的解决方案。

TBH最好使用模型进行绑定

然而,既然您明确表示不想这样做,那么在没有特定模型的情况下,就应该这样做

在razor视图中,为每个复选框指定相同的名称(也与操作中的参数名称相同)和值

以便:

@using(Html.BeginForm( "User","User",FormMethod.Post,new{enctype="multipart/form-data"}))
{

    <input type="checkbox" name="answer" value="U1">Choice one</input>
    <input type="checkbox" name="answer" value="U2">Choice two</input>
    <input type="checkbox" name="answer" value="U3">Choice three</input>
    <input type="checkbox" name="answer" value="U4">Choice four</input>

....

<input type="checkbox" name="answer" value="U55">Choice fifty five</input>

<button type="submit">Send</button>
}
@使用(Html.BeginForm(“User”,“User”,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
选择一
选择二
选择三
选择四
....
选择55
发送
}
然后在你的行动中:

[HttpPost]
public async Task<ActionResult> User(string[] answer)
{

}
[HttpPost]
公共异步任务用户(字符串[]应答)
{
}
如果说用户选中了
One
two
four
,那么在
答案
参数中,您将得到
U1
U2
U4


然后根据
答案中的值
,您可以动态地确定每个问题的正确或错误

您可以像下面的代码一样执行此操作:

@using(Html.BeginForm( "User","User",FormMethod.Post,new{enctype="multipart/form-data"}))
{

    <input type="checkbox" name="answer[]" value="@dynamicValue">@dynamicValue</input>

    <button type="submit">Send</button>
}
@使用(Html.BeginForm(“User”,“User”,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
@动态值
发送
}

[HttpPost]
公共异步任务用户(字符串[]应答)
{
}

您需要为所有复选框指定相同的
名称
属性,并且参数的名称将相同-例如
和方法中的
字符串[]选项
。但您还需要为所有复选框指定一个
属性。正确的MVC方法是使用带有
bool
属性的视图模型-请参阅示例,因为我理解答案[0]是“U1”,答案[1]是“U2”,答案[3]是“U4”,答案[54]是“U55”。我说得对吗?例如,答案[32]和其他值为空?@Esmael no-您只会得到检查值-因此,如果用户检查了U1和U2,那么在答案中您只会得到两个值(U1和U2)-因此,您没有得到的任何值都意味着它没有被检查。本质上,答案中只显示选中的值。我假设您还可以回答另一个问题:我感谢您的解决方案:)
[HttpPost]
public async Task<ActionResult> User(string[] answer)
{

}