2012-07-26 228 views
0

我有一個如下定義的表單。將數據從視圖傳遞到控制器問題

<% using (Html.BeginForm("PRoll", "Payroll", FormMethod.Post, new { @id = "frmPRoll" })){%> 

    <%= Html.TextBoxFor(model => model.keyid, new { @class = "required", Style = "width:190px", @maxlength = "15" })%> 
    .... 
<% } %> 

和控制器作爲

public ActionResult Index(int? id) 
{ 
    var bo = new PayrollInfo(); 
    return View(bo); 
} 

[HttpPost] 
public ActionResult DetailPage(string keyid) 
{ 
    //TempData["prid"] = p_payrollid; 
    return RedirectToAction("PayDtl/" + keyid, "Payroll", keyid); 
} 

我通過jquery的提交表單作爲遵循

function DetailPage() { 
    var rol = $('#keyid').val(); 
    $('#frmPRoll').attr('action', '/Proll/DetailPage/'+rol).submit(); 
} 

在控制器DetailPage動作方法,keyid的值是空百達。它永遠不會獲得來自視圖的實際數據。

如何從控制器視圖中獲取keyid值?

感謝

+0

當調試'DetailPage',什麼是'Request.Form'和'Request.QueryString'收藏的內容是什麼? – 2012-07-26 15:11:13

回答

0

試試這個

function DetailPage() { 
    var rol = $('#keyid').val(); 
    $.ajax({ 
      type: "POST", 
      url: '@Url.Action("DetailPage", "Proll")', 
      data: "keyid=" + rol 
      success: function (result) { 
      ... 
    }); 
}); 
+0

謝謝,但我需要做全職/提交,因爲我試圖重定向到不同的控制器/行動 – Deb 2012-07-26 15:03:36

+0

是的。我明白了。我會盡力寫出你想要做的事情。 – 2012-07-26 15:08:04

2
function DetailPage() { 
    // TODO: don't hardcode /Proll/DetailPage here: use url helpers 
    $('#frmPRoll').attr('action', '/Proll/DetailPage').submit(); 
} 

既然已經有包含keyid的值,這個表單中的文本框,當您提交的形式向DetailPage行動,該值將被張貼動作參數keyid

此外,您正在使用RedirectToAction方法的錯誤超載。它應該是這樣的,當然假設你的PayDtl預計稱爲keyid參數:

[HttpPost] 
public ActionResult DetailPage(string keyid) 
{ 
    return RedirectToAction("PayDtl", "Payroll", new { keyid = keyid }); 
} 
相關問題