2013-07-12 50 views
0

我有一個帶有導航額外按鈕的JqGrid。在onClickButton事件中,我想將行數據發佈到另一個視圖,而不僅僅是可以通過操作鏈接完成的一個值。我需要能夠傳遞更多的變量和它們的值來執行參數化創建操作,其中包含預填充值[隱藏輸入]並顯示在視圖中。在這種情況下,我只發送2個.JSON更合適。但讓我們繼續。JqGrid - 將數據(重定向)發佈到控制器操作結果爲404

.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"; 

聲明數據可能丟失或改變的地方。我需要以某種方式找到一種方法來顯示傳遞後的值,從而使操作的CreateWithParams視圖呈現(無論GET還是POST)。對於創建動作,我不需要傳遞模型數據,只需要先前的值但稱爲視圖即可使用模型。每個發佈後操作示例僅返回回調,但不顯示使用發送數據的控制器操作視圖。或者這是完全不好的方法,這是不可能的?或者調用CreateWithParams操作的結果重發數據的另一個操作?如果這樣可以讓我指向正確的方向?

+0

我解決了這個問題其他的方式,我創建隱藏的形式隱藏提交按鈕,當用戶點擊導航按鈕觸發它,所以在行動CreateWithParams我剛剛更換參數到FormCollection。像魅力一樣工作。 – JadaVonRuth

回答

0

看起來,阿賈克斯有其侷限性,不能輕易地用參數重定向。所以頁面上的隱藏表單必須出現在場景中。

<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(); 
    } 
}); 
相關問題