0

我有一个带有导航额外按钮的 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 发送 - 作为传递给 controller 的一个变量。我认为这与

location = "url";

数据可能丢失或更改某些内容的语句。我需要以某种方式找到一种方法,如何通过显示传递的帖子值来呈现操作 CreateWithParams 的视图(无论是 GET 还是 POST)。对于创建操作,我不需要传递模型数据,只需传递以前的值,但称为视图将使用模型。每个发布操作示例仅返回回调,但不使用发送的数据显示控制器操作视图。或者这是完全错误的方法,这是不可能的?或者通过 CreateWithParams 操作重新发送数据来调用另一个操作?如果是这样,有人能指出我正确的方向吗?

4

1 回答 1

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();
  }
}); 
于 2013-07-13T14:09:53.703 回答