我有一个带导航额外按钮的JqGrid。在onClickButton事件中,我想将行数据发布到另一个视图,而不仅仅是一个可以通过操作链接完成的值。我需要能够使用它们的值传递更多变量,以使用预填充值[隐藏输入]执行参数化创建操作并在视图中显示。在这种情况下,我只发送2. JSON会更合适。但是让我们继续。
.jqGrid('navButtonAdd', '#rolesPager',
{
caption: "",position: 'first',buttonicon: "ui-icon-plus",
title: $.jgrid.nav.addtitle,
onClickButton: function () {
$.post("/Administration/Roles/CreateWithParams", {
foreignColumn: 'WEB_USER_id', foreignValue: '1' }, function (data) {
location = "/Administration/Roles/CreateWithParams";
}).fail(function (error)
{
alert(error);
});
}});
然后我有一个控制器动作:
//
// GET: /Administration/Roles/Create
[HttpGet]
[HttpPost]
public ActionResult CreateWithParams(string foreignColumn, int foreignValue)
{
ViewBag.WEB_ROLE_id = new SelectList(db.WEB_ROLE, "WEB_ROLE_id", "name");
ViewBag.WEB_USER_id = foreignValue;
return View();
}
发送数据但在404中呈现其视图失败 - 找不到资源。在我的post方法中,我只有2个参数,但可以作为JSON发送 - 只是一个传递给控制器的变量。我认为这与
有关location = "url";
声明数据可能丢失或更改的内容。我需要以某种方式找到一种方法,如何通过显示传递的post值来渲染动作CreateWithParams(如果GET或POST无关紧要)。对于创建操作,我不需要传递模型数据,只需传递先前的值,但称为视图使用模型。每个post动作示例只返回回调但不显示使用发送数据的控制器动作视图。或者这是一个非常糟糕的方法,这是不可能的?或者通过CreateWithParams操作的结果重新发送数据来调用另一个操作?如果这样可能会让我指向正确的方向吗?
答案 0 :(得分:0)
看起来ajax有其局限性,不能轻易地重定向参数。因此,页面上隐藏的表单必须出现在场景中。
<form action="/Administration/Roles/CreateWithParams"
style="display: none" method="post"
name="roles_hiddenForm" id="#roles_hiddenForm"
novalidate="novalidate">
<input type="hidden" value="2" name="WEB_USER_id" id="WEB_USER_id">
<input type="hidden" value="WEB_USER_id" name="ForeignKeyColumn" id="ForeignKeyColumn">
<input type="hidden" value="2" name="ForeignKeyValue" id="ForeignKeyValue">
<input type="submit" name="roles_hiddenSubmit" id="roles_hiddenSubmit"></form>
和js我修改为:
.jqGrid('navButtonAdd', '#rolesPager',
{
caption: "",position: 'first',
buttonicon: "ui-icon-plus",
title: $.jgrid.nav.addtitle,
onClickButton: function () {
$("#roles_hiddenSubmit").click();
}
});