C# 使用数组将多个参数从视图传递到控制器
我想在不使用模型的情况下,在我的控制器上发布55到100个项目,从视图上看可能是假的,也可能是真的。这是我在Razor视图中的代码: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
@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)
{
}