ASP.NET MVC 3:动态加载部分视图

时间:2011-06-28 02:30:37

标签: asp.net-mvc-3 content-management-system razor

我想扩展现有的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的新闻Feed ID。

这个问题是模型中的内容是最后一件事,所以我不知道如何告诉index.cshtml视图换出news.cshtml的标记部分。

任何方向都将受到赞赏。

修改

我也愿意接受有关如何在将控制器中的内容传递给视图之前解析内容的建议。

2 个答案:

答案 0 :(得分:2)

如果您不是要解析标记的内容,另一种方法是为要加载的内容放置一个实际的div。

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

然后在你的页面上有一些javascript(jQuery),它们通过调用服务器来填充这些div。

$(function() {
  $('.news').each(function() {
    $.get('/CMS/LoadNews/' + $(this).attr('id')).appendTo($(this));
  }
}
^就在我的头顶,没有仔细检查它的工作原理。

在大多数情况下,我更喜欢服务器端解析,但是根据内容是什么以及是否需要在页面加载时,这可能很有用。

答案 1 :(得分:0)

创建一个自定义HtmlHelper扩展,用于解析内容,调用Html.Action,使用结果更新文本,并返回要显示的内容。