无法通过弹出窗口将对象传递给控制器​​方法

时间:2018-07-11 07:24:01

标签: javascript c# jquery asp.net-mvc popup

从ajax调用中,我单击一下按钮即可获取一些要传递到另一个窗口的数据。我成功接收到数据,但是当传递数据时,在控制器方法参数中接收到的值为null。

<script>
    $(document).ready(function () {
        $('#btnSalesInAmount').click(function () {
            var data = {
                toDate: $('#todatepicker').val(),
                fromDate: $('#fromdatepicker').val(),
                customerId: $('#CustomerId').val()
            };
            $.ajax({
                type: 'Get',
                url: '/Reports/SalesInAmount' + '?toDate=' + data.toDate + '&fromDate=' + data.fromDate + '&customerId=' + data.customerId,
                data: data,
                success: function (data) {                       
                    window.open("/Reports/SalesInAmountView" + '?salesInAmount=' + data, 'SalesInAmountViewWindow', "features");// the data is not received by controllers method
                }
            });
        });
    });
</script>

在控制器中

 public ActionResult SalesInAmountView(SalesInAmount salesInAmount) // parameter value is null
    {
        return View();
    }

模型

   public class SalesInAmount
{
    public DateTime SalesDt { get; set; }
    public int SalesSl { get; set; }
    public int CustomerSupplyId { get; set; }
    public string CustomerSupplyNm { get; set; }
    public double TotalSalesByCustomer { get; set; }
    public double TotalDiscount { get; set; }
    public double TotalVat { get; set; }
    public double TotalSales { get; set; }
    public List<SalesInAmount> List { get; set; }
}

2 个答案:

答案 0 :(得分:1)

尝试一下,

简化数据集

 var Param1= $('#ID').val();
 var Data = JSON.stringify({ Data1 : Param1, . . });

Ajax

$.ajax({
                url: '@Url.Action("Action_Name", "Controller_Name")',
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                type: "POST",
                data: Data,               
                cache: false,
                success: function (data) {

                    });

                }, error: function (request, status, error) {

                }
            });

        }

控制器

 public JsonResult Action_Name(string Data1 , . . )
        {

            return Json(Some_Json);
        }

注意:此控制器返回Json结果,取决于要求。

答案 1 :(得分:0)

在传递参数之前,您需要对javascript对象进行字符串化,JSON.stringify()是javascript中的函数

<script>
$(document).ready(function () {
    $('#btnSalesInAmount').click(function () {
        var data = {
            toDate: $('#todatepicker').val(),
            fromDate: $('#fromdatepicker').val(),
            customerId: $('#CustomerId').val()
        };
        $.ajax({
            type: 'Post',
            url: '/Reports/SalesInAmount',
            data: JSON.stringify(data),
            success: function (data) {                       
                window.open("/Reports/SalesInAmountView" + '?salesInAmount=' + data, 'SalesInAmountViewWindow', "features");// the data is not received by controllers method
            }
        });
    });
});

请确保您为模态类SalesInAmount指定了相同的变量名称。

[HttpPost]    
public ActionResult SalesInAmountView(SalesInAmount salesInAmount) // parameter value is null
{
    return View();
}