C# MVC 在浏览器上渲染之前修改 View HTML

C# MVC modify View HTML before rendering on browser

我想知道是否可以在将视图发送到浏览器之前修改视图 HTML。

我想创建一个自定义标签编译器,我可以在其中插入一个简单的标签作为 <my-parsing-tag></my-parsing-tag> 在视图上并将其替换为某些特定的 HTML.

我已经在使用 OnActionExecutingOnActionExecuted 过滤器在上下文中执行一些操作(更改 ViewBags、视图名称、会话等),我也尝试在那里做,但是我找不到获得 HTML 的正确位置,我什至不知道是否可以这样做。

是否可能或者我需要将我的观点 HTML 存储在数据库中以完成我需要的?

编辑

正如@Juan 所问,我为什么需要它:

我正在使用号召性用语系统,在该系统中,用户可以在他想要的页面上放置一些特定的模式活动,只需使用这些简单的标签或选择将显示它的页面即可。

之后,我会将选定的 HTML 附加到视图,然后再将其发送给用户。该系统适用于无法编辑视图的用户,因为他们无法使用 HTML.

编辑 2

经过一些研究,我尝试实现自定义 RazorView,代码是 here 和索引视图 HTML,但现在我有两个问题:

第一个是我的索引视图有一些来自数据库的 HTML 并使用我的 ViewModel 上的变量放置在那里,而不是将号召性用语 HTML 放置在我的索引视图的末尾,它被放置在 ViewModel 变量之前。第二个问题是 HTML 被复制而不是被替换。这是结果的图片:

http://imgur.com/a/elul1

您可以为此使用 HtmlHelper 扩展:

http://tech.trailmax.info/2012/08/creating-custom-html-helper-in-mvc3/

我建议如下:

  • 在您的模板(最有可能的布局)中定义一个容器,它将接收用户决定通过管理面板 "drop" 放入其中的任何内容。
  • 您让视图知道有一些东西可以通过 ViewBag 显示。
  • 视图使用您传递的信息来呈现所需的内容。

它的呈现方式是 HTMLHelper 扩展的用武之地。您可以创建一个扩展方法,根据您传递给它的信息呈现部分视图,或者您可以根据所需的小部件有选择地调用一组扩展方法.