MVC3动作只接受部分参数

本文关键字:受部 参数 MVC3 | 更新日期: 2023-09-27 18:14:21

从我的观点来看:

$('#roles').button().click(function () {
    $.get('@Url.Action("load_manageRoles","Staff",new {muid = Model.UserID,Column = sort.Column,Direction = sort.Direction,page =(int?)ViewBag.page,upid=upid})',
        function (data) {
            $("#dialog-role-management").html("").html(data);
            $("#dialog-role-management").dialog({
                resizable: false,
                height: 500,
                width: 400,
                modal: true,
                buttons: {
                    Cancel: function () {
                        $("#dialog-role-management").html("");
                        $(this).dialog("close");
                    }
                }
            });
            $('#dialog-role-management').show();
        });
});

使用firebug,我看到所有的参数都被填满了有效值。

动作如下:

[HttpGet]
    public ActionResult load_manageRoles(Guid muid,GridSortOptions sort, int? page,String upid)
    {
        ....
        }

正在发生的奇怪的事情是page和upid没有被填充,结果是空的,即使它看起来像我之前说的,从firebug正确的值被传入。但是,muid和sort被正确传递。

非常困惑,希望能得到任何帮助。

谢谢克里斯更新1:

谢谢你的回复,仔细检查了一下,但它是正确的。控制器的细节是不相关的,我一开始肯定没有说清楚。问题在于传递给服务器的数据没有被解析。以下是firebug向服务器捕获的参数:

Column  UserName

方向提升

muid f4ab6784 - fbd3 - 4386 - 80 - d7 - 6 - b186eb04c52

第1页

upid dc8f4336 - 0903 - 4875 - 848 - e - a1b30098a457

为了测试我是否翻转了muid和upid的值,muid仍然被接受,而upid仍然为空。此外,如果我将upid从string更改为guid,它仍然是空的。

更新2

我翻转了jquery中参数的顺序,从muid=xx, upid=xx等…到upid=xxx, muid=xxx,等等…结果是muid现在是null,而upid有值。我还在新订单上重复了更新1测试,结果相同。由于某种原因,它似乎只接受第一个形参。

更新3

取得进展,似乎该动作只接受第一个参数。我通过旋转所有参数和组合来测试这一点。对于为什么会发生这种情况有什么建议吗?

谢谢你的回复!!

MVC3动作只接受部分参数

您似乎订阅了某个按钮的.click()事件。如果这是一个表单或锚的提交按钮,你需要通过从点击回调返回false来取消默认操作。

可能是大小写问题:

(int?)ViewBag.page
应:

(int?)ViewBag.Page ????

如果没有看到整个对应的控制器动作,那就只能靠猜测了。

在哪里声明和赋值'upid' ?

upid=upid