Работа с частичными представлениями - PullRequest
1 голос
/ 08 апреля 2010

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

При выполнении поиска это должно отобразить частичное представление сетки с новой информацией.

В данный момент мне нужна информация, например, по какому столбцу я сортирую и так далее, из сетки (в настоящее время хранится в viewdata), чтобы выполнить поиск, так как я хочу сохранить эти настройки. Эта информация доступна только в частичной сетке.

Как лучше всего сделать это аккуратно и красиво в коде, а не в беспорядке для работы?

Где я могу хранить информацию, которая мне нужна, в другом частичном представлении?

Частичное представление 1;

<table>
       <%= Html.CreateGrid(Model, "Grid", "Grid", (int)ViewData["SortColumn"], (bool)ViewData["SortedASC"])%>
</table>

Частичный вид 2;

<div class="searchControl">
    <input type="text" class="SearchBox" href="<%= Url.Action("Grid", "Grid", new {page = 1, columnToSortBy=/* would like to access viewdata from partial view 1 here. */, sortASC = /* would like to access viewdata from partial view 1 here. */  } ) %>" />
    <input type="submit" value="Search" class="SearchButton" />
</div>

Я знаю, что могу принять совершенно неправильный подход к этому, поэтому не стесняйтесь указывать мне правильный!

Спасибо!

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

ViewData - хорошее место для хранения данных, к которым обращаются в Представлениях и Частях.

Еще лучше, если вы используете строго типизированные представления.Затем вы можете получить доступ к данным для сортировки фильтрации по типизированной модели.Я хотел бы, чтобы классы моделей реализовали интерфейс IGridFeatures, который имеет свойства для SortedASC, SortColumn, Page.

Часто рекомендуется иметь эти необязательные свойства не в маршруте, а в строке запроса.

0 голосов
/ 08 апреля 2010

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

...