使用数组

时间:2017-06-02 23:06:52

标签: c# asp.net-mvc razor asp.net-mvc-5 html.beginform

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

@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>
                               }

控制器:

[HttpPost]
public async Task<ActionResult> User(Array....)
{
return view();}

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

2 个答案:

答案 0 :(得分:3)

动态地你可以像下面的代码一样:

@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>
}

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

}

答案 1 :(得分:0)

TBH最好使用模型进行绑定。

但是,既然你明确表示你不想那么,那么如果没有特定的模型就会这样做

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

这样:

@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>
}

然后在你的行动中:

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

}

如果说用户选中了Onetwofour,那么在answer参数中,您将获得U1U2和{ {1}}

然后根据U4中的值,您可以确定每个问题的真或假