我的表格定义如下。
<% 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();
}
控制器中的keyid值DetailPage操作方法总是为null。它永远不会从视图中填充实际数据。
如何从控制器中的视图中获取keyid值?
感谢
答案 0 :(得分: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 });
}
答案 1 :(得分:0)
试试这个
function DetailPage() {
var rol = $('#keyid').val();
$.ajax({
type: "POST",
url: '@Url.Action("DetailPage", "Proll")',
data: "keyid=" + rol
success: function (result) {
...
});
});