我试图通过调用Ajax.BeginForm来显示局部视图,但我无法接收我的表单的值(我需要获取隐藏输入的值,bookId,在控制器中,例如5)。
//查看
@using (Ajax.BeginForm("Detail", "Books", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "ShowBookDiv" }))
{
<input type="hidden" id="bookId" value="5" />
<input type="submit" id="sBtn" value="Details" />
}
//控制器
[HttpGet]
public ActionResult Detail(string bookId)
{
if (Request.IsAjaxRequest())
{
var a = Request["bookId"].ToString();
// some code to get details
return PartialView("ShowBooks", details);
}
...
}
当我跟踪Controller中的代码时,bookId为null!
答案 0 :(得分:4)
我已将“name”属性添加到隐藏字段,它可以正常工作!真奇怪!
<input type="hidden" name="bookId" id="bookId" value="5" />
答案 1 :(得分:1)
Ajax.BeginForm
是一种痛苦。
我会使用JQuery Ajax API中的$.ajax
:
http://api.jquery.com/jQuery.ajax
这是一个很好的例子,你可以看到它是如何工作的:
发布整个表单需要一些工作(在验证等方面),但如果您擅长使用JavaScript,则可以完全控制操作。