Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将对象数组作为隐藏字段值传递给mvc控制器_Arrays_Asp.net Mvc - Fatal编程技术网

Arrays 将对象数组作为隐藏字段值传递给mvc控制器

Arrays 将对象数组作为隐藏字段值传递给mvc控制器,arrays,asp.net-mvc,Arrays,Asp.net Mvc,我使用的是VS2015,MVC5。 我的提交表格: @using (Html.BeginForm("Test", "Home", FormMethod.Post)) { <input name="celo" type="hidden" value="994" /> <input name="pispis" type="hidden" value="Došel je prošel pisani Vuzem!" />

我使用的是VS2015,MVC5。 我的提交表格:

        @using (Html.BeginForm("Test", "Home", FormMethod.Post))
    {
        <input name="celo" type="hidden" value="994" />
        <input name="pispis" type="hidden" value="Došel je prošel pisani Vuzem!" />
        <input name="userji" type="hidden" 
            value="[{'ID':1,'Name':'John','TotalPayed':0,'TotalDebt':0},
                {'ID':2,'Name':'George','TotalPayed':0,'TotalDebt':0},
                {'ID':3,'Name':'Simon','TotalPayed':0,'TotalDebt':0},
                {'ID':4,'Name':'Antonio','TotalPayed':0,'TotalDebt':0}]" />
        <input type="submit" value="Submit test"/>
    }

值“celo”和“pispis”正确传输。我对对象数组“userji”有问题-它在控制器上为空。有没有一种方法可以使用提交表单将对象数组传递给控制器?

我所知道的唯一一种方法就是欺骗。我过去的做法是以字符串的形式传递数据,然后在控制器端以JSON的形式解析数据。

@FrenkyB您可以将绑定更改为字符串,然后将其分解为如下列表

public void Test(int celo, string pispis, string userji)
{
    var myList = JsonConvert.DeserializeObject<List<User>>(userji);

    //stuff
}
公共无效测试(int-celo、string-pispis、string-userji)
{
var myList=JsonConvert.DeserializeObject(userji);
//东西
}
@使用(Html.BeginForm(“Test”、“Home”、FormMethod.Post))
{
var users=新列表
{
新用户{Name=“John”,TotalPayed=0,TotalDebt=0},
新用户{Name=“George”,TotalPayed=0,TotalDebt=0},
新用户{Name=“Simon”,TotalPayed=0,TotalDebt=0},
新用户{Name=“Antonio”,TotalPayed=0,TotalDebt=0}
};
@for(int i=0;i
您不能。您需要为集合中的每个项目创建输入(使用
for
循环或自定义
EditorTemplate
for typeof
User
。但是将大量数据发送到客户端,然后将其原封不动地重新发送回来有什么意义呢?如果需要,只需在POST方法中重新获取数据。对象数组是在客户端上动态创建的。我想传递该array到服务器。它是如何生成的?为了发布到该方法,您需要
etc@StephenMuecke-这样,我可以保存一个对象,创建四个隐藏字段,就像您所描述的。我如何保存对象数组?您可以保存任意多个对象-
[#]
是集合中的索引器-它只需要从零开始并且是连续的。我最后一条评论中的代码将绑定2
ID
2
User
objects的属性。字符串将运行…字符串将传输到控制器。如果该字符串以某种方式传输到列表中,这将是理想的…否则,很好。我的意思是,它将转到controller已经作为列表。或者正如人们评论的那样,您可以使用循环等方式为每个json创建输入。这是一种获取当前json输入并将其快速转换为列表的方法。
    public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int TotalPayed { get; set; }
    public int TotalDebt { get; set; }         
}
public void Test(int celo, string pispis, string userji)
{
    var myList = JsonConvert.DeserializeObject<List<User>>(userji);

    //stuff
}
@using (Html.BeginForm("Test", "Home", FormMethod.Post))
{
    var users = new List<User> 
    {
        new User { Name = "John", TotalPayed = 0, TotalDebt = 0 },
        new User { Name = "George", TotalPayed = 0, TotalDebt = 0 },
        new User { Name = "Simon", TotalPayed = 0, TotalDebt = 0 },
        new User { Name = "Antonio", TotalPayed = 0, TotalDebt = 0 }
    };

    <input name="celo" type="hidden" value="994" />
    <input name="pispis" type="hidden" value="Došel je prošel pisani Vuzem!" />

    @for(int i = 0; i < users.Count; i++)
    {
        var user = users[i];

        <input name="userji[@i].Name" type="hidden" value="@user.Name" />
        <input name="userji[@i].TotalPayed" type="hidden" value="@user.TotalPlayed" />
        <input name="userji[@i].TotalDebt" type="hidden" value="@user.TotalDebt" />
    }

    <input type="submit" value="Submit test"/>
}