Являются ли iframes / script единственными способами иметь несколько независимых элементов управления в ASP.NET MVC? - PullRequest
0 голосов
/ 23 января 2009

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

Are you sure you want to delete this FabWidget "<%= Model.Name %>"?

Careful, this FabWidget controls these FrobNozzles:

<% Html.RenderAction("Grid", "FrobNozzles") %>

<!-- Form for delete/cancel -->

Пока все хорошо ... если только вид сетки FrobNozzle не слишком велик и ему не нужно выполнять подкачку страниц. Если произойдет обычное пейджинговое действие, мы просто перейдем со страницы удаления. Как мы можем получить пейджинг для сетки FrobNozzle?

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

Существует ли какая-либо простая интеграция ASP.NET MVC, чтобы это работало без особой надобности? Например, в ASP.NET WebForms постбэк ViewState просто позволил бы нам запускать события сетки FrobNozzle, не мешая остальной части страницы. Любая "магия", как это для ASP.NET MVC?

Я смотрел на частичное и так далее, но не видел, как он справляется с проблемой обратной передачи.

1 Ответ

1 голос
/ 24 января 2009

Это одна из вещей, которая отличает MVC от WebForms. Если вы хотите сделать что-то подобное, вам нужно написать код для обработки страниц.

Вы можете передать «PostbackUrl» в действие Grid, и действие Grid может использовать этот URL-адрес всякий раз, когда он выводит на экран данные (добавляя свои аргументы подкачки к строке запроса). Или вы можете передать «PostbackRouteData», который будет набором значений маршрута, которые будут использоваться при генерации ссылок подкачки (опять же, Grid добавит свои аргументы подкачки к данным маршрута).

Я бы на самом деле предложил использовать здесь помощники Ajax (Ajax.ActionLink отлично подойдет для подкачки страниц), но если вам действительно нужно избегать IFrames и JavaScript, вам придется развернуть собственное решение.

MVC дает вам большой контроль над рендерингом, что может быть преимуществом. Тем не менее, вы теряете «Windows-подобную» управляемую событиями модель программирования WebForms.

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