ASP.NET MVC 3: динамическая загрузка частичных представлений - PullRequest
0 голосов
/ 28 июня 2011

Я хочу расширить существующую систему CMS и пытаюсь добавить поддержку «модуля».

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

Пример:

<p>
    My fun content that is located in a paragraph tag
</p>
[news:1234]
 <p>
    ... more fun content within a different paragraph tag
</p>

Вышеприведенный пример очень специальный, но вы получите картину.Я хотел бы иметь возможность динамически загружать представление news.cshtml и использовать идентификатор новостной ленты 1234.

Проблема с этим заключается в том, что содержимое из модели является последним в сети., поэтому я не уверен, как заставить представление index.cshtml поменять маркер для частичного news.cshtml.

Будет оценено любое направление.

РЕДАКТИРОВАТЬ

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

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

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

<div class="news" id="1234"></div>

Тогда на вашей странице есть некоторыеjavascript (jQuery), который заполнял эти div с обращениями к серверу.

<code>$(function() {
  $('.news').each(function() {
    $.get('/CMS/LoadNews/' + $(this).attr('id')).appendTo($(this));
  }
}
^ в самый раз, не перепроверил, работает ли он.

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

0 голосов
/ 28 июня 2011

Создайте пользовательское расширение HtmlHelper, которое анализирует содержимое, вызывает Html.Action, обновляет текст с результатом и возвращает содержимое для отображения.

...