Действие MVC при нажатии кнопки отправки - PullRequest
1 голос
/ 16 февраля 2012

У меня есть сайт, который просматривает БД и просматривает результаты. Я хочу сделать так, чтобы при каждом новом поиске индекс страницы по умолчанию равнялся 1. Чтобы сделать это, я хочу передать флаг, когда нажата кнопка отправки, чтобы сказать контроллеру изменить индекс страницы. Я думал, что вы могли бы передать значение с помощью атрибута onclick, но безуспешно.

Вот мой код для текстового поля поиска и кнопки отправки (без моей неудачной попытки использования атрибута onclick).

Find: @Html.TextBox("SearchString", ViewBag.CurrentSearch as string)
<input type = "submit" value = "Search"/ >

Ответы [ 3 ]

1 голос
/ 16 февраля 2012

этот ответ предоставляется для решения вашего исходного вопроса, чтобы не требовать серьезного рефакторинга (см. Окончательный комментарий для моего предложения). Итак, используйте скрытый ввод как таковой:

Find: @Html.TextBox("SearchString", ViewBag.CurrentSearch as string)
<input type="hidden" name="lastSearchValue" ViewBag.LastSearch as string />
<input type = "submit" value = "Search"/ >

затем при отправке формы проверьте, совпадают ли значения lastSearchValue и SearchString, если это так, сделайте то, что вам нужно. если я понимаю ваши рассуждения, то последним шагом будет установка ViewBag.LastSearch на значение последнего набора ViewBag.CurrentSearch.

A Лучшим решением было бы использование SearchViewModel для инкапсуляции всей этой логики автономным способом. Это дает преимущество того, что несопоставимая логика не распространяется на различные проблемы.

1 голос
/ 16 февраля 2012

Вы можете использовать скрытый ввод:

Find: @Html.TextBox("SearchString", ViewBag.CurrentSearch as string)
<input type="hidden" name="resetPageIndex" value="true" />
<input type = "submit" value = "Search"/ >

Введенное значение будет отправлено вместе с отправкой формы. Вам необходимо соответствующим образом обновить параметр POST, принятый вашим контроллером.

0 голосов
/ 16 февраля 2012

Вы можете передать флаг как скрытый ввод в форме:

@Html.Hidden("FlagValue", Your_Flag_Value);
Find: @Html.TextBox("SearchString", ViewBag.CurrentSearch as string)
<input type = "submit" value = "Search"/ >
...