【发布时间】: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 根本不会传递给控制器。
-
您是否为此控制器操作定义了路由?默认路由不会处理两个参数。您要么添加路由前缀,要么将其添加到路由表中