2012-07-26 227 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 }); 
} 
相关问题