Как получить доступ к текущему вводу в форме Razor, чтобы я мог добавить его к запросу? - PullRequest
0 голосов
/ 30 марта 2012

У меня есть таблица с сортируемыми заголовками, подкачкой (с использованием PagedList), с фильтрами с кнопкой отправки (с использованием HtmlForm Get). Используя любой из фильтров, или щелкая заголовки или номера страниц, следует выполнить запрос Get и обновить таблицу с той же строкой запроса. Однако у меня есть проблема:

Заголовки и страницы являются ссылками действий, а сами фильтры были созданы с использованием @Html.TextBox, DropDownList и т. Д. И имеют кнопку отправки

В моем ActionLink мне нужно иметь возможность передавать все параметры, включая значения, которые в настоящее время находятся в форме фильтра:

@Html.ActionLink("< Prev", "Index",
                 new {Value1 = (Value in TextBox),
                      Value2 = ViewBag.Something,
                      Value3 = ect...})

и есть также кнопка отправки для фильтров, и если она нажата, мне нужно иметь возможность добавить дополнительную информацию в строку запроса из моего Viewbag, который содержит значение заголовка сортировки и должен отправить значение из модель с номером страницы.

Есть ли вообще что-то, что я пытаюсь сделать?

(я думал о том, чтобы превратить кнопку отправки из входа в ссылку действия, но я все еще не знаю, как получить текущие значения из Html.TextBox и т. Д.) ...

EDIT

Я создал новый объект фильтра, который теперь отправляю в качестве параметра моему контроллеру. Тем не менее, у меня есть ссылки на некоторые действия для заголовков моей таблицы и для страниц. Я не знаю, как я могу изменить свой объект фильтра, когда на него щелкают, не создавая действия для каждого заголовка и кнопки страницы в моем контроллере. Это даже плохая идея? Например:

ActionResult NextPage(Filter filter);...
ActionResult Header1(Filter filter);...
...

Если я не сделаю это таким образом ... Я не знаю, как узнать, на какую ссылку действия щелкнул пользователь ... и я не могу использовать routedatadictionary, потому что я могу только отправить свой объект фильтра или куча параметров не обоих ...

Другая идея заключается в том, чтобы отправить все свойства модели фильтра, а также имя ссылки, как в строковом запросе, а затем перестроить фильтр в контроллере ...

1 Ответ

0 голосов
/ 30 марта 2012

Вы можете попробовать использовать модель! Так что в действии «Индекс», сделайте так, чтобы его параметры принимала модель SomeModel Просто привяжите все входы к нему, и он будет автоматически отправлен. Чтобы позаботиться о сохранении ViewBag, у вас есть правильная идея там, где вы просто говорите new {Value1 = ViewBag.Something}. Если вы действительно хотите сделать его еще более MVC-простым, просто создайте поле в модели для того, что содержит вьюбаг, а затем отрендерите Html.HiddenFor (m => m.SomeField). Надеюсь, это поможет!

[HttpPost]
public ActionResult Index(SomeModel model, SomeValue value, ...)
{
     //Do whatever filtering you have to do, or redirects, or w/e it is you want

     return View(model);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...