Создание многоразовых виджетов

Я использую asp.net mvc 2.0 и пытаюсь создать повторно используемые части веб-сайта, которые можно динамически добавлять на любую страницу.
У меня проблема в том, как загрузить частичное представление со всеми связанными js и данными? Я пробовал сделать это следующими способами:

  1. Используйте частичное представление и поместите в него все js. В главном представлении используйте частичный рендеринг. Но для инициализации частичного представления мне нужно добавить модель в текущую модель метода действия, чтобы иметь возможность создавать RenderPartial("MyPartialView", Model.PartialViewModel).
    Также у меня нет места для размещения дополнительных данных, которые мне нужны для заполнения моей формы (например, значений раскрывающихся списков, некоторые предопределенные значения и т. д.).

  2. Используйте RenderAction, но похоже, что у него те же проблемы, что и у RenderPartial, за исключением того, что мне не нужно ничего добавлять к какой-либо другой модели.

Любые другие oprions приветствуются.


person Yaroslav Yakovlev    schedule 04.07.2011    source источник


Ответы (1)


Насколько я понимаю, RenderAction выполняет полный конвейер действия, а затем отображает результат - так что визуализируется то же самое, что вы бы увидели, если бы перешли к действию.

Я использовал RenderAction для визуализации «виджетов» по ​​всему сайту, но, на мой взгляд, они должны быть независимыми от страницы, отображающей их, иначе они на самом деле не являются виджетами и вместо этого должны быть частью кода страницы визуализации. Например, если есть форма входа в систему, вы всегда будете перенаправлять пользователя на страницу, которая может обрабатывать информацию, независимо от того, на какой странице он сейчас находится, так что это хороший виджет. Я также использовал его для показа корзины покупок или рекламы. Ни то, ни другое не зависит от отображаемой страницы.

Надеюсь, это немного поможет!

person Carl    schedule 04.07.2011
comment
Карл, так куда мне идти? Как я могу заполнить данные, необходимые, например, для раскрывающийся список? Куда девать всю разметку + js? - person Yaroslav Yakovlev; 04.07.2011
comment
Заполните его в контроллере для действия для виджета. Разметка идет в частичном представлении, а JS - на главных страницах (если вы не используете бритву, где вы можете затем поместить ее в частичное представление). - Чтобы было ясно, вам нужно действие и представление для виджета, и вы вызываете действие с помощью RenderAction. - person Carl; 06.07.2011