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
取得进展,似乎该动作只接受第一个参数。我通过旋转所有参数和组合来测试这一点。对于为什么会发生这种情况有什么建议吗?
谢谢你的回复!!
您似乎订阅了某个按钮的.click()
事件。如果这是一个表单或锚的提交按钮,你需要通过从点击回调返回false来取消默认操作。
可能是大小写问题:
(int?)ViewBag.page
应:(int?)ViewBag.Page ????
如果没有看到整个对应的控制器动作,那就只能靠猜测了。
在哪里声明和赋值'upid' ?
upid=upid