从jquery发送参数到MVC4动作

时间:2013-03-01 16:26:07

标签: jquery asp.net-mvc-4 parameters action

当我尝试将我的网站与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&amp", pageInfo + "&");
                dummyURL = dummyURL.replace("-4&amp", 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&在网址中我还需要替换它...

1 个答案:

答案 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&amp", pageInfo + "&");
            dummyURL = dummyURL.replace("-4&amp", rowSZ + "&");
            var path = dummyURL;
            window.location = path;                    
        }