c# - asp mvc Controller 从 ajax 接收空值

标签 c# jquery ajax asp.net-mvc

已经尝试了找到的方法,但似乎仍然无法解决问题。 我通过 Jquery Aja 传递对象列表,但 Controller 似乎正在接收空值(它正在识别列表计数)。

jquery代码如下:

var xmlids = Array();

        for (var i = 0; i < orderId.length; i++) {
            var xdata = {
                "XmlOid": "" +orderId[i] + "", 
                "CourierCompany": $("#CourierCompany_"+orderId[i]).val() ,
                "CourierService": $("#CourierService_" + orderId[i]).val(),
                "StoreId" :  storeId 
            };
            xmlids.push(xdata);
        }

var data = { invoices: xmlids };


        $.ajax({
            url: purl,
            type: "POST",
            dataType: "json",
            //contentType: "application/json;",
            async: false,

            data: data,

Controller 参数是:

public JsonResult ProcessSaleOrder(List<XMLInvoiceGeneration> invoices)

对象如下:

public class XMLInvoiceGeneration
    {
        public Int64 XmlOid { get; set; }
        public string CourierCompany { get; set; }
        public string CourierService { get; set; }
        public Int64? StoreId { get; set; }
    }

感谢任何帮助。

最佳答案

我尝试重现您的问题。

我创建了一个新的 ASP.NET MVC Web 应用程序,并在 Home Controller 的索引 View 中添加了以下内容

<input type="button" id="send" value="Send" />
@section scripts{
    <script type="text/javascript">
        $(function () {
            $("input#send").on("click", function () {
                var xmlids = Array();

                for (var i = 0; i < 2; i++) {
                    var xdata = {
                        "XmlOid": 1,
                        "CourierCompany": "TempData",
                        "CourierService": "Temp",
                        "StoreId": 2
                    };

                    xmlids.push(xdata);
                }

                var data = { invoices: xmlids };

                $.ajax({
                    url: "/Home/ProcessSaleOrder",
                    type: "POST",
                    dataType: "json",
                    async: false,
                    data: data
                });
            });
        })
    </script>
}

我基本上创建了一些临时数据,但仍尝试使用您最初的想法。我的 Controller 如下所示:

[HttpPost]
public ActionResult ProcessSaleOrder(List<XMLInvoiceGeneration> invoices)
{
    return new EmptyResult();
}

当我单击按钮并在 Controller 中命中断点时,invoices 参数包含 2 个项目,均具有我在 JavaScript 代码中设置的值。我不确定为什么您的代码不起作用,但也许您可以使用我的代码作为模板来帮助您缩小问题范围。

关于c# - asp mvc Controller 从 ajax 接收空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26412406/

相关文章:

c# - 我可以在 C# 中创建一个包含长字符串和字符串的列表吗

c# - ServiceHost的自定义Factory无法从GAC加载

javascript - 构建asp :chart dynamically using javascript

javascript - Scrapy tbody 标签返回一个空答案但里面有文本

php - 我应该如何在ajax点击按钮时创建一个新的复选框?

c# - UserControl 中的 wpf 绑定(bind)集合属性

c# - 在 C# 中从字符串创建 JSON 对象

jquery - 使用 jQuery animate 制作具有 200 毫秒交叉淡入淡出效果的 img 切换源?

javascript - 如何实例化 JQuery 小部件 - 使用什么文本

jquery - 仍在加载时进行部分 AJAX 渲染