0

从我的观点来看:

$('#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();
        });

});

使用萤火虫我看到所有参数都填充了有效值。

动作看起来像:

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

        }

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

非常困惑,任何帮助将不胜感激。

谢谢克里斯

更新 1:

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

Column  UserName

方向上升

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

第 1 页

upid dc8f4336-0903-4875-848e-a1b30098a457

为了测试我是否触发了 muid 和 upid 的值,muid 仍然被接受并且 upid 仍然为空。此外,如果我将 upid 从字符串更改为 guid,它仍然为空。

更新 2

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

更新 3

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

感谢您的回复!

4

2 回答 2

1

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

于 2013-05-20T13:39:49.917 回答
0

也许这里有一个大写问题:

(int?)ViewBag.page

应该:

(int?)ViewBag.Page ????

在没有看到整个相应的控制器动作的情况下,它的所有猜测都是真的。

'upid' 在哪里声明和分配?

upid=upid

于 2013-05-20T13:43:19.087 回答