#javascript #asp.net-mvc-3 #partial-views
#javascript #asp.net-mvc-3 #частичные представления
Вопрос:
Хорошо, вот в чем дело: я использую BeginRouteForm для отправки поиска. В любом случае, когда кнопка не настроена на отправку, и я нажимаю на кнопку, поиск выполняется нормально, и он ведет себя так, как должен, что означает, что содержимое отображается правильно. Когда для кнопки установлен тип отправки и нажата кнопка, возвращаемое содержимое представляет собой просто некоторый текст, а HTML не отображается вообще.
Важно отметить, что контроллер пытается вернуть частичное представление, которое использует javascript для замены части содержимого с помощью ajax (это означает, что тип содержимого «текст / javascript»).
Метод контроллера:
public ActionResult Search()
{
[Do Some Work]
return JsView("Index.js");
}
JsView («Index.js «) просто устанавливает тип содержимого в «текст / 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:
Судя по вашему описанию, похоже, что вы хотите захватить событие отправки для своей формы, а затем выполнить вызов AJAX для вашего контроллера. Если это то, что вы хотите, вам нужно предотвратить распространение события отправки, чтобы не происходило POST.
Используя jquery, сделайте что-то вроде этого:
$("form").submit(function() {
// make AJAX submission to controller
// process JS returned from controller
// stop submit event from propagating
return false;
});