【问题标题】:Controller did not get request控制器没有收到请求
【发布时间】:2015-12-29 01:56:25
【问题描述】:

我有从 UI 获取 dateStart 和 dateEnd 的 JQuery 函数,然后将这些参数传递给控制器​​。这里的问题是控制器没有收到任何请求并且没有显示错误?谁能解释为什么会这样?

jQuery:

$("#btn_search").click($.proxy(function () {

   var dateStart = document.getElementById('dataStart').value;
   var dateEnd = document.getElementById('dateEnd').value;

    KeyWord.getGroup(dateStart, dateEnd,
     function (data) {
       $("#view_table").ViewTable('option', 'data', data);
            },
            function () { },
            function () { Metronic.unblockUI(); });

        }))

var KeyWord = function () {
var url_Log = "api/Log/Search";
return {
    getGroup: function (dateStart, dateEnd, done, fail, always) {
        var jqxhr = $.get(url_Log, { dateStart: dateStart, dateEnd: dateEnd    });
        jqXhrHandler(jqxhr, done, fail, always);
    }
}
}();

控制器:

 [HttpGet]
    public string Search(DateTime? dateStart, DateTime? dateEnd)
    {
        LogDalc dalc = new LogDalc();

        DateTime _sdate = dateStart == null ? DateTime.MinValue : (DateTime)dateStart;
        DateTime _edate = dateEnd == null ? DateTime.MinValue : (DateTime)dateEnd;

        return dalc.Sel(_sdate, _edate);
    }

【问题讨论】:

  • 您是否使用浏览器中的开发者工具检查请求? (即 Chrome 中的“网络”标签)。控制台有错误吗?
  • 这很可能是您的 dateStart 和 dateEnd 值存在问题。在你开火之前它们是什么样子的?您很可能会像这样使用 jQuery 的 .ToJSON():var dateStart = document.getElementById('dataStart').value.ToJSON();
  • 我认为 dateStart 和 dateEnd 根本不会传递给控制器​​。
  • 您是否为此控制器操作定义了路由?默认路由不会处理两个参数。您要么添加路由前缀,要么将其添加到路由表中

标签: c# jquery jquery-ui


【解决方案1】:

我认为你的问题是你如何设置网址,改变

var url_Log = "api/Log/Search"; 

var url_Log = "/api/Log/Search";

你看,如果你在http://domain/Home/About并且你执行这个函数,调用的url是http://domain/Home/api/Log/Search,但是,如果你在url的开头添加/,那么调用的url就是@ 987654323@

【讨论】:

    猜你喜欢
    • 2015-01-13
    • 1970-01-01
    • 2018-02-28
    • 2019-10-20
    • 2016-10-22
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    相关资源
    最近更新 更多