2011-01-23 4 views
0

Для моего сайта я хочу реализовать элемент управления баннера, который будет находиться на левой стороне сайта. Баннеры будут храниться в html в базе данных, и каждый будет иметь рейтинг. Затем, используя рейтинг, каждый будет иметь количество вхождений (в процентах).ASP MVC banner rotator

  1. Считаете ли вы, что есть возможное решение поместить весь этот поток в отдельную dll? Это возможно даже в архитектуре mvc. Я бы предпочел сделать это как частичное представление и иметь все в отдельной dll частичный вид и уровень доступа к данным. Считаете ли вы, что это хорошее решение?

  2. Каков ваш подход, когда вам нужно реализовать «пользовательский контроль» (частичный просмотр) ... вы помещаете его в проект веб-сайта или отдельный проект?

  3. Есть ли другой способ реализовать это вместо использования частичного представления?

Спасибо, Radu

ответ

2

Там есть несколько вариантов, которые вы have-

  1. сделать это как HtmlHelper расширение. Вероятно, это не идеальное решение для такого рода вещей, как управление баннерами для отображения, а связанная с ним логика действительно является проблемой компонента/виджета/частичного баннера.

  2. Сделайте это как частичный вид и используйте Html.RenderPartial(object Model), чтобы позвонить ему. Теперь логика находится в частичном представлении, но также может быть некоторая логика приложения, которая не должна действительно входить в представление и действительно принадлежит модели или контроллеру. Кроме того, вы можете получить модели с жирным изображением, передаваемые на главный вид, которые также должны иметь модель представления для каждой частичной визуализации в главном представлении. Я думаю, что в некоторых ситуациях это не идеально, особенно когда данные в моделях представления для частичных данных не имеют ничего общего с данными для основного вида. Что приводит нас к ...

  3. Сделайте это как дочернее действие с соответствующим контроллером и частичным представлением. Логика будет хорошо инкапсулирована в контроллер, и частичный вид просто отобразит все, что передается от BannerController.

Вы могли бы, конечно, сделать это в отдельной сборке и установить его в качестве Portable area. Таким образом, вы можете встраивать частичные представления в сборку, и для повторного использования виджета можно было бы просто отбросить сборку в папке bin и ссылаться на нее в вашем основном проекте приложения (возможно, вам также потребуется настроить некоторую конфигурацию) ,

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

Мне также нравится поддерживать логику доступа к данным в отдельном сборке и использовать repository pattern along with IoC to inject repositories для доступа к данным в контроллеры.