Почему Ajax.BeginForm не передает значения формы? - PullRequest
3 голосов
/ 28 сентября 2011

Я пытаюсь показать частичное представление посредством вызова 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 равен нулю!

Ответы [ 2 ]

4 голосов
/ 29 сентября 2011

Я добавил свойство name в скрытое поле, и оно работает !!! действительно странно!

 <input type="hidden" name="bookId" id="bookId" value="5" />
1 голос
/ 28 сентября 2011

Ajax.BeginForm это боль, ИМО.

Я бы использовал $.ajax из JQuery Ajax API:

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.

...