为什么Ajax.BeginForm不传递表单值?

时间:2011-09-28 06:43:06

标签: asp.net-mvc asp.net-mvc-3 asp.net-ajax

我试图通过调用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!

2 个答案:

答案 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

这是一个很好的例子,你可以看到它是如何工作的:

http://www.tugberkugurlu.com/archive/working-with-jquery-ajax-api-on-asp-net-mvc-3-0-power-of-json-jquery-and-asp-net-mvc-partial-views

发布整个表单需要一些工作(在验证等方面),但如果您擅长使用JavaScript,则可以完全控制操作。