MVC3: при нажатии кнопки «Отправить» для отправки формы частичное представление не отображается - PullRequest
0 голосов
/ 31 октября 2011

Хорошо, вот сделка: я использую BeginRouteForm для отправки поиска.В любом случае, когда кнопка не настроена на отправку, и я нажимаю кнопку, она выполняет поиск очень хорошо и ведет себя как следует, а это означает, что содержимое отображается правильно.Когда для кнопки установлен тип отправки и кнопка нажата, возвращаемое содержимое представляет собой просто некоторый текст, а HTML вообще не отображается.

Важно отметить, что попытка контроллера была выполненавернуть частичное представление, которое использует javascript для замены некоторого содержимого с помощью ajax (это означает, что тип содержимого - «text / javascript»).

Метод контроллера:

public ActionResult Search()
{
  [Do Some Work]
  return JsView("Index.js");
}

JsView ("Index.js") просто устанавливает тип содержимого на 'text / javascript' и возвращает частичное представление, совпадающее с переданным параметром

Фрагмент формы:

<div style="float:right;">
 @using (Html.BeginRouteForm(ControllerActionName, SearchRouteValues, FormMethod.Get, new { id = "worklistSearch" }))
 {
   <input type="text" placeholder="Search Cases" id="SearchCriteria" name="SearchCriteria" value="" />
   <input class="search image-button no-text filter" value="Filter" id="worklist-search-button" />
  }
 </div>

PS: Мне кажется, мне нужно сделать кнопку типом отправки, чтобы получить форму для отправки с помощью клавиши ввода.

Я хотел бы знать, как я могу заставить эту работу работать так, чтобы она правильно отображала представление и позволяла мне нажимать кнопку отправки.

1 Ответ

0 голосов
/ 01 ноября 2011

Судя по вашему описанию, кажется, что вы хотите захватить событие отправки для вашей формы, а затем сделать вызов AJAX своему контроллеру.Если это то, что вам нужно, вам нужно предотвратить распространение события submit, чтобы не происходило POST.

Используя jquery, сделайте что-то вроде этого:

$("form").submit(function() {
    // make AJAX submission to controller
    // process JS returned from controller

    // stop submit event from propagating
    return false;
});
...