Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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
C# 如何将JavaScript数组作为post的一部分传递给ASP.NETMVC操作_C#_Javascript_Ajax_Asp.net Mvc - Fatal编程技术网

C# 如何将JavaScript数组作为post的一部分传递给ASP.NETMVC操作

C# 如何将JavaScript数组作为post的一部分传递给ASP.NETMVC操作,c#,javascript,ajax,asp.net-mvc,C#,Javascript,Ajax,Asp.net Mvc,我有一个cshtml,如下所示 DoPost.cshtml @using (Html.BeginForm("Purchase", "PurchaseOrder", FormMethod.Post, new { @id = "frmPurchase" })) { // statements // statements <input type="button" id="submitPurchase" onclick = "myPurchase()" value="Select" />

我有一个cshtml,如下所示

DoPost.cshtml

@using (Html.BeginForm("Purchase", "PurchaseOrder", FormMethod.Post, new { @id = "frmPurchase" }))
{

// statements

// statements

<input type="button" id="submitPurchase" onclick = "myPurchase()" value="Select" />
}
我接受数据的行动如下:

public ActionResult Purchase(PurchaseOrderModel model)
        {            
            //Do some stuff with the passed data
            return View("Purchase", model);
        }
在上面的PurchaseOrderModel中,我拥有

public string[] SelectedProducts { get; set; }
接受Javascript数组元素

我尝试的是: 这个简单的帖子不起作用,因为JavaScript数组元素不是表单元素的一部分,我不能使用@Html.HiddenFor,因为它是一个数组

因此尝试在myPurchase函数下发布Ajax帖子

在这里,我没有在操作中获得model.SelectedProducts下的ExtraItems详细信息。最大的问题是我想从操作中加载Purchase.cshtml视图,而不是将控件返回到Jquery帖子


请帮助我如何解决这个问题

使用$.ajax函数和选项traditional:true为字符串项列表启用ASP.NET MVC默认模型绑定。

您应该将javascript数组作为json对象发布。您可以使用JSON.stringify方法将值转换为JSON。比如:

 $.ajax({
        url: '@Url.Action("Purchase", "PurchaseOrder")',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({ 
            SelectedProducts: ExtraItems
        })
    });

在模型中获取字符串属性,然后将数据作为逗号分隔的字符串发送

var dataToSent = ExtraItems.join(',')
如果您购买的模型中有一个名为Datum的string类型的属性,那么要发送的数据将是,传递模型

data : 'Datum=' + dataToSent
在您的操作中,您可以将数据拆分为数组 同样对于返回响应,您必须在ajax调用的success函数中重定向页面

$.ajax( {
        type: 'POST',
        url: '/Default1/Index',
        data: { SelectedProducts: ExtraItems },

        traditional: true,
        success: function ( response )
        {
            window.location.href = "/controller/action" <--your url


        }
    } );

谢谢,问题是它没有返回视图购买,型号;部分我回到了Ajax的成功部分,但没有重定向;部分我回到了Ajax的成功部分,但是没有重定向。谢谢Arun,但是,我也获得了成功和提醒,但是返回视图;部件不工作??是否要重定向到另一个视图?使用ajax时不能通过返回视图重定向。应从javascript重定向。成功:函数响应{window.location.href=/controller/action抱歉,我有一些模型要传递给视图,它相当大。返回ViewPurchase,model。我想我应该发布这些数据,对吗?好的,然后使用一个隐藏字段。将该数组保存到隐藏字段并将其绑定到model否,我也需要传递一个模型。返回ViewPurchase,model;model由于Toupe项目数据太多,所以不可能通过Windows位置,因为模型有太多的数据。@ TBA向屏幕写响应。文档。
 [HttpPost]
        public ActionResult Index( string[] SelectedProducts )
        {
              return View();
        }
var dataToSent = ExtraItems.join(',')
data : 'Datum=' + dataToSent
$.ajax( {
        type: 'POST',
        url: '/Default1/Index',
        data: { SelectedProducts: ExtraItems },

        traditional: true,
        success: function ( response )
        {
            window.location.href = "/controller/action" <--your url


        }
    } );