当我尝试将我的网站与firefox和chrome一起使用时,我得到了一个例外,我没想到...
The parameters dictionary contains a null entry for parameter 'page' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult EditEncounterReturnPage(Int32, Int32, Int32, Int32)'
现在,同样的调用在IE 9中运行得很好......我实际上会将值归结为我的行为,而且根本没有任何障碍。
这是我用来发送参数的jquery ......
ondblClickRow: function (id) {
var pageInfo = $(this).jqGrid('getGridParam', 'page');
var rowSZ = $(this).jqGrid('getGridParam', 'rowNum');
debugger;
var dummyURL = '@Url.Action("EditEncounterReturnPage", "EditEncounter", new { encounterId = "-2", popId = (int)TempData["POPULATIONID"], page = "-3", rowSize = "-4" })';
dummyURL = dummyURL.replace("-2&", id + "&");
dummyURL = dummyURL.replace("-3&", pageInfo + "&");
dummyURL = dummyURL.replace("-4&", rowSZ + "&");
var path = dummyURL;
window.location = path;
}
现在我在调用的动作中没有可以为空的参数......
public ActionResult EditEncounterReturnPage(int encounterId, int popId, int page, int rowSize) { ...
我必须遗漏一些东西。我错误地设置了参数?
/EditEncounter/EditEncounterReturnPage?encounterId=1900&popId=2&page=2&;rowSize=-4
我想我可能知道它是什么...我有2&在网址中我还需要替换它...
答案 0 :(得分:1)
你的数据类型为int的页面参数,你用双引号传递page =“ - 3”,告诉jqgrid它是字符串。你需要删除双引号,然后像下面这样传递-3,这应该可行
ondblClickRow: function (id) {
var pageInfo = $(this).jqGrid('getGridParam', 'page');
var rowSZ = $(this).jqGrid('getGridParam', 'rowNum');
debugger;
var dummyURL = '@Url.Action("EditEncounterReturnPage", "EditEncounter", new { encounterId = "-2", popId = (int)TempData["POPULATIONID"], page = -3, rowSize = "-4" })';
dummyURL = dummyURL.replace("-2&", id + "&");
dummyURL = dummyURL.replace("-3&", pageInfo + "&");
dummyURL = dummyURL.replace("-4&", rowSZ + "&");
var path = dummyURL;
window.location = path;
}