asp.net mvc 3 jquery или ajax проблема с @ Ajax.BeginForm () - PullRequest
1 голос
/ 27 октября 2011

Я работаю над простым проектом CMS, и я столкнулся со стеной. А потом через много часов взорвали его.

Почему-то мои кнопки внутри @Ajax.BeginForm не активировали обратную передачу. Ни полный постбэк, ни ajax. Я ссылался на сценарии и пытался отлаживать jQery, проверял каждый символ в Контроллеры, Представления, Ссылки и Модели , но безрезультатно. Не было ни ошибок, ни исключений.

Действие контроллера:

[HttpPost]
public ActionResult Delete(int ID,int page=1)
{
  //some code...
  //...work, work, work...
}

Просмотр сегмента:

@using (Ajax.BeginForm("Delete", "Client", new { page = Model.CurrentPageIndex }, ao))
{
    @Html.Hidden("clientID", item.ClientID)
    <input type="submit" value="Briši" name="brisi" />
}

Ошибка:

Словарь параметров содержит пустую запись для параметра 'ID' ненулевого типа 'System.Int32' для метода 'System.Web.Mvc.ActionResult Delete (Int32, Int32)' в 'Info3CRM.WebUI.Controllers. ClientController. Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр. Имя параметра: параметры

Наконец-то я решил отключить jQuery и Ajax и выполнить обычную обратную передачу. Затем было сделано исключение. Я пытался вызвать Действие в контроллере без всех необходимых параметров.

Мой вопрос ко всем: как отловить такое исключение, если включены jQuery и ajax?

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Вы могли видеть эту ошибку в каком-либо инструменте отладки на стороне клиента.

Например, Fiddler покажет вам ответ, полученный с сервера - и вы можете использовать FiddlerВкладка WebView, чтобы увидеть ответ HTML.Ответ HTML в этом случае будет отображать желтый экран ошибки ASP.NET.

В дополнение к Fiddler вы также можете использовать средства отладки браузера, встроенные в IE, Chrome или Opera, или загрузить * 1007.* Firebug для FireFox.У каждого инструмента есть вкладка сети, которая покажет вам все запросы Ajax и их ответы.

0 голосов
/ 27 октября 2011

Ваша проблема в том, что действие, которое вы отправляете, ожидает найти параметр с именем ID, в то время как такой параметр не выполняется. Если вы измените имя скрытого ввода, чтобы оно совпадало с именем параметра, все должно работать нормально.

Итак, измени

@Html.Hidden("clientID", item.ClientID)

до

@Html.Hidden("ID", item.ClientID)
...