MVC3 Action只接受一些参数?

时间:2013-05-20 13:33:21

标签: c# asp.net-mvc-3

从我的观点来看:

$('#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)
    {
        ....

        }

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

非常困惑,任何帮助都会受到赞赏。

谢谢Chris

更新1:

感谢您对双重检查的响应,但它是正确的。控制器的细节是无关紧要的,我最初不能说清楚。问题在于未传递到服务器的数据未被解析。以下是firebug捕获到服务器的参数:

Column  UserName

方向升序

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

第1页

upid dc8f4336-0903-4875-848e-a1b30098a457

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

更新2

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

更新3

取得进展似乎行动只接受第一个参数。我通过旋转所有参数和组合来测试它。有关为何发生这种情况的任何建议吗?

感谢您的回复!!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这可能是资本化问题:

(int?)ViewBag.page

应该是:

(int?)ViewBag.Page ????

没有看到整个相应的控制器动作,它的所有猜测工作真的。

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

upid=upid