从我的观点来看:
$('#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
取得进展似乎行动只接受第一个参数。我通过旋转所有参数和组合来测试它。有关为何发生这种情况的任何建议吗?
感谢您的回复!!
答案 0 :(得分:1)
您似乎订阅了某个按钮的.click()
事件。如果这是表单或锚点的提交按钮,则需要通过从单击回调中返回false来取消默认操作。
答案 1 :(得分:0)
这可能是资本化问题:
(int?)ViewBag.page
应该是:
(int?)ViewBag.Page ????
没有看到整个相应的控制器动作,它的所有猜测工作真的。
声明并分配'upid'在哪里?
upid=upid