Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/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
Asp.net mvc MVC中将列表传递给HttpGet方法的另一种方法_Asp.net Mvc_List_Parameter Passing - Fatal编程技术网

Asp.net mvc MVC中将列表传递给HttpGet方法的另一种方法

Asp.net mvc MVC中将列表传递给HttpGet方法的另一种方法,asp.net-mvc,list,parameter-passing,Asp.net Mvc,List,Parameter Passing,我需要将一个列表(至少包含3项)传递给MVC HttpGet操作。。。但我不知道如何通过。。。是否有其他方法代替使用请求查询字符串?对我来说,使用请求查询字符串是不可能的,因为列表是在客户端动态创建的 public ActionResult Customer(List customer) { return View(); } 请引导我通过这个。。。提前谢谢 您可以通过手动解析FormCollection对象来实现这一点,但这样做会产生繁琐的代码。但是,

我需要将一个列表(至少包含3项)传递给MVC HttpGet操作。。。但我不知道如何通过。。。是否有其他方法代替使用请求查询字符串?对我来说,使用请求查询字符串是不可能的,因为列表是在客户端动态创建的

    public ActionResult Customer(List customer)
    {

        return View();
    }

请引导我通过这个。。。提前谢谢

您可以通过手动解析
FormCollection
对象来实现这一点,但这样做会产生繁琐的代码。但是,如果无法控制已发布值的名称,则可能需要执行此操作

public ActionResult Customer(FormCollection response)
{
    for (int i = 0; i < response["CustomerCount"]; i++
    {
        list.Add(
            new Customer
            {
                ID = response["Customer" + i + ".ID"],
                Name = response["Customer" + i + ".Name"],
                ...
            });
    }
}
控制员:

public CustomerController : Controller
{
    public ActionResult Add(List<Customer> myList)
    {
        var test = myList.Count; // 2
        var test2 = myList[1].Name; // Alice
    }
}

注意:客户是
返回视图(myViewModel)传递的
CustomerEdit视图模型
类中的
列表

它需要从用户发送什么类型的数据?完整的客户数据(名字、姓氏等)?或者只是现有客户Id的列表?@arserbin3我需要在列表中传递Id、姓名、出生日期、地址、城市、国家、电子邮件和其他基本详细信息。非常感谢@arserbin3。。我用了你的主意,效果很好。。我无法用言语表达我的感激之情。。再次感谢你,我的朋友…:-)我对你提到的方法还有一个疑问。Querystring具有长度约束。。。。那么还有其他方法吗?另一种(更好的)方法是以
POST
请求的形式提交数据,而不是
GET
<代码>POST
数据没有长度限制。然后应该考虑将< > > [HtpStp] < /Cord>属性添加到<代码> Ad()中:
public CustomerController : Controller
{
    public ActionResult Add(List<Customer> myList)
    {
        var test = myList.Count; // 2
        var test2 = myList[1].Name; // Alice
    }
}
@model MyNamespace.ViewModels.CustomerEditViewModel
@Html.BeginForm("Edit", "Customer")
{
    @* Show all current customers for editing *@
    @for (int i=0; i < Model.Customers.Count; i++)
    {
        @Html.TextBoxFor(x => x.Customers[i].ID)
        @Html.TextBoxFor(x => x.Customers[i].Name)
    }

    <input type="submit" />
}