繁体   English   中英

使用数组从视图向控制器传递多个参数(无线电)

[英]Passing multi parameters (radio) from view to controller using array

我想在不使用Model的情况下,将55到100项可能在视图中为假或真的项目发布到我的控制器。 这是我在Razor View中的代码:

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

        <input type="radio" name="answer1">Choice one</input>
        <input type="radio" name="answer1">Choice two</input>
        <input type="radio" name="answer2">Choice three</input>
        <input type="radio" name="answer2">Choice four</input>

    ....

    <input type="radio" name="answer55">Choice fifty five</input>
    <input type="radio" name="answer55">Choice fifty six</input>

    <button type="submit">Send</button>
                                   }

控制器:

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

如何使用数组将所有参数(单选按钮)发送到控制器。 感谢您的所有解决方案。

也许创建一个包含size布尔元素数组的视图模型类,然后将每个元素绑定到Razor页面中的单选按钮。

public class BooleanViewModel
{
   public BooleanViewModel(int size)
   {
      BoolArray = new bool [size];
   }

   public bool [] BoolArray {get; set;} 
}

设置您的Razor页面模型: @model BooleanViewModel

然后,在Razor中,您可以使用@Html.RadioButtonFor(model => model.BoolArray[0], "textForButton")等。您还可以进行一些foreach循环,并遍历model.BoolArray所有项目。

尝试在控制器中:

 // GET: Home
        public ActionResult Index()
        {
            List<MyItem> radioItems = new List<MyItem>();
            radioItems.Add(new MyItem() { Caption="radio1", Value="radio1Value"});
            radioItems.Add(new MyItem() { Caption="radio2", Value="radio2Value"});
            radioItems.Add(new MyItem() { Caption="radio3", Value="radio3Value"});
            radioItems.Add(new MyItem() { Caption="radioN", Value="radioNValue"});
            return View(radioItems);
        }
        [HttpPost]
        public void IndexPost(List<string> items)
        {
            // todointo item has your selected item
            var x = items;

        }

在您的cshtml中:

@using (Html.BeginForm("IndexPost", "Home", FormMethod.Post))
        {
            foreach (var item in Model)
            {

                <input type="checkbox" name="items" value="@item.Value">@item.Caption
            }

            <button Type="submit">Send</button>

        }

在视图中:要使阵列起作用,请按以下格式命名单选按钮,以使模型绑定起作用

@using (Html.BeginForm("Index", "Home")) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()
    <input type="radio" name="param[0]" value="one" >
    <input type="radio" name="param[0]" value="two" >
    <input type="radio" name="param[1]" value="three" >
    <input type="radio" name="param[1]" value="four" >
    <input type="radio" name="param[2]" value="five" >
    <input type="radio" name="param[2]" value="six" >
  <input type="submit" value="submit" />
}

在Post ActionMethod中:

 [HttpPost]       
 public ActionResult Index(string[] param)
                { //
    }

那么您将在action方法中获取param数组中的值。 您可以根据需要设置任意数量的单选按钮,并且ModelBinder将负责绑定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM