【问题标题】:asp.net mvc 5 send two parametrs to controller from ajax scryptasp.net mvc 5 从 ajax scrypt 向控制器发送两个参数
【发布时间】:2017-03-05 12:19:50
【问题描述】:

在我看来,我有:

    @Html.EditorFor(model => model.From, new { htmlAttributes = new {id = "fromEdit", @class = "form -control", @style = "width:300px" } })

    @Html.EditorFor(model => model.To, new {htmlAttributes = new { id = "toEdit", @class = "form-control", @style = "width:300px"}})

我需要使用来自 scrypt 的两个 DatetTime 参数调用控制器操作:

    <script>
        var dataToSend = {
            startDate: $("#fromEdit").getDate,
            endDate: $("#toEdit").getDate
        }

        $(document).ready(function() {
            $('#example').DataTable({
                "ajax": {
                    "url": RootUrl + "SalesDetailsReport/GetSalesDetailReport",
                    "type": "GET",
                    "data": dataToSend ,
                    "dataType": "json"
                },
                "aoColumns": [
                    { "data": "Date", "autoWidht": true },
                    { "data": "Client", "autoWidht": true },
                    { "data": "Product", "autoWidht": true },
                    { "data": "Costs", "autoWidht": true },
                    { "data": "Profit", "autoWidht": true },
                    { "data": "ProfitMarginPercentage", "autoWidht": true },
                    { "data": "Amount", "autoWidht": true },



                ]
            });
        });
    </script>

在我的控制器中:

public ActionResult GetSalesDetailReport(DateTime pFrom , DateTime pTo)

出了点问题(或一切),因为在我的浏览器的属性中我看到了:

GetSalesDetailReport?_=1477245791871 500(内部服务器错误)

并且永远不会调用控制器操作。#

感谢您的宝贵时间!

【问题讨论】:

  • 好的,我的浏览器属性发生了这种变化,我可以看到:localhost:59798/SalesDetailsReport/… 加载资源失败:服务器响应状态为 500(内部服务器错误)。看起来我是以错误的格式读取日期时间。谢谢
  • 浏览器的消息是:参数字典包含方法'System.Web.Mvc.ActionResult GetSalesDetailReport( System.DateTime, System.DateTime)”在“ERPPrismaMVC5.Controllers.SalesDetailsReportController”中。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数

标签: asp.net ajax datetime parameters asp.net-mvc-5


【解决方案1】:

您的操作方法参数是pFrompTo。所以请确保您是您发送的 js 对象具有相同的属性名称。

var dataToSend = {
                  pFrom: $("#fromEdit").val(),
                  pTo:  $("#toEdit").val()
                }

【讨论】:

  • 在此更改后,我将在 url 中发送:
  • 在此更改之后,我将在 url 中发送此内容:pFrom=23%2F10%2F2016%2020%3A23%3A01& 并且因为控制器没有接收到权限参数,所以也没有调用操作。谢谢
  • 你怎么知道控制器没有接收到参数?您是否设置了断点并验证了值?
  • 是的,我在开头放了一个断点,而且浏览器告诉我:参数字典包含参数“pFrom”的空条目。我认为采取 null baceau 可以解决类型。有什么想法吗?
  • 可能是您的输入在调用时没有价值。尝试将 pFrompTo 的值替换为一些硬编码的日期字符串(例如:10/10/2001),看看会发生什么。
猜你喜欢
  • 1970-01-01
  • 2020-04-17
  • 2015-08-08
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多