asp.net MVC 3 C#交阵列的变量(asp.net mvc 3 c# post array

2019-09-02 15:58发布

我需要传递数组POST方法。 但我显然缺少sometging我的观点是这个样子:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Klausimynas.Models.Rezultat>" %>

<input type="text" name="x[1]">
<input type="text" name="x[2]">
<input type="text" name="x[3]">
<input type="text" name="x[4]">
<input type="text" name="x[5]">
<input type="text" name="x[6]">
<input type="text" name="x[7]">

我的方法声明如下所示:

[HttpPost]
public ActionResult LetsTest(IEnumerable<Rezultat> rez)

当我试图提取数据,我得到的价值不能为空。 什么我失踪?

Answer 1:

有几件事情错在这里:

  1. 您的观点是输入到Rezultat但你试图把该模型作为IEnumerable<Rezultat>
  2. 你试图给每个文本框结合x[i] -这将等同于Model.x[i] -当你真正想要的是将其绑定到[i].x (即Model[i].x ) 。

因此,要解决这个问题,你需要改变一些事情。

首先,改变你的看法继承System.Web.Mvc.ViewPage<IEnumerable<Klausimynas.Models.Rezultat>> 。 现在,您的视图可以传递IEnumerable<Rezultat>这是你的控制器动作需要什么。

其次,改变这种:

<input type="text" name="x[0]">

为此:

<input type="text" name="[0].x">

这样做的原因是,首先会尝试将值绑定Model.x[0]这是(或将是,一旦你正确输入你的看法),相当于第一元素属性x的实例IEnumerable<Rezultat> 。 这显然是不完全正确,作为一个IEnumerable不公开任何财产x 。 你想要的是绑定Model[0].x ,这是属性x的的Rezultat对象的索引0

更妙的是,使用一个辅助来为你生成的名字:

for(int i=0; i < Model.Count; i++)
{
    @Html.TextBoxFor(m => m[i].x)
}


Answer 2:

如果你真的wnat以这种方式做到这一点,你必须使用我想收集表格

[HttpPost]
public ActionResult LetsTest(FormCollection collection, IEnumerable<Rezultat> rez)
{

    string[] inputs = new string[6];
    for(int i=1; i<8; i++)
   {
       //get all your array inputs
       inputs[i-1]=collection["x["+i+"]"]
   }

}


Answer 3:

看看模型绑定到一个列表在这里 。 已发布项目需要在一定的格式,以能够检索它们作为POST操作列表。



Answer 4:

更改您的视图代码如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Klausimynas.Models.Rezultat>" %>

<input type="text" name="x[0]" />
<input type="text" name="x[1]" />
<input type="text" name="x[2]" />
<input type="text" name="x[3]" />
<input type="text" name="x[4]" />
<input type="text" name="x[5]" />
<input type="text" name="x[6]" />

更新 :在第二的想法,我认为这是你的实际问题,你是从1-7开始,而不是0-6。

由于蚂蚁。



文章来源: asp.net mvc 3 c# post array of variables