C# MVC 在浏览器上渲染之前修改 View HTML
C# MVC modify View HTML before rendering on browser
我想知道是否可以在将视图发送到浏览器之前修改视图 HTML。
我想创建一个自定义标签编译器,我可以在其中插入一个简单的标签作为 <my-parsing-tag></my-parsing-tag>
在视图上并将其替换为某些特定的 HTML.
我已经在使用 OnActionExecuting
和 OnActionExecuted
过滤器在上下文中执行一些操作(更改 ViewBags、视图名称、会话等),我也尝试在那里做,但是我找不到获得 HTML 的正确位置,我什至不知道是否可以这样做。
是否可能或者我需要将我的观点 HTML 存储在数据库中以完成我需要的?
编辑
正如@Juan 所问,我为什么需要它:
我正在使用号召性用语系统,在该系统中,用户可以在他想要的页面上放置一些特定的模式活动,只需使用这些简单的标签或选择将显示它的页面即可。
之后,我会将选定的 HTML 附加到视图,然后再将其发送给用户。该系统适用于无法编辑视图的用户,因为他们无法使用 HTML.
编辑 2
经过一些研究,我尝试实现自定义 RazorView
,代码是 here 和索引视图 HTML,但现在我有两个问题:
第一个是我的索引视图有一些来自数据库的 HTML 并使用我的 ViewModel 上的变量放置在那里,而不是将号召性用语 HTML 放置在我的索引视图的末尾,它被放置在 ViewModel 变量之前。第二个问题是 HTML 被复制而不是被替换。这是结果的图片:
您可以为此使用 HtmlHelper 扩展:
http://tech.trailmax.info/2012/08/creating-custom-html-helper-in-mvc3/
我建议如下:
- 在您的模板(最有可能的布局)中定义一个容器,它将接收用户决定通过管理面板 "drop" 放入其中的任何内容。
- 您让视图知道有一些东西可以通过 ViewBag 显示。
- 视图使用您传递的信息来呈现所需的内容。
它的呈现方式是 HTMLHelper 扩展的用武之地。您可以创建一个扩展方法,根据您传递给它的信息呈现部分视图,或者您可以根据所需的小部件有选择地调用一组扩展方法.
我想知道是否可以在将视图发送到浏览器之前修改视图 HTML。
我想创建一个自定义标签编译器,我可以在其中插入一个简单的标签作为 <my-parsing-tag></my-parsing-tag>
在视图上并将其替换为某些特定的 HTML.
我已经在使用 OnActionExecuting
和 OnActionExecuted
过滤器在上下文中执行一些操作(更改 ViewBags、视图名称、会话等),我也尝试在那里做,但是我找不到获得 HTML 的正确位置,我什至不知道是否可以这样做。
是否可能或者我需要将我的观点 HTML 存储在数据库中以完成我需要的?
编辑
正如@Juan 所问,我为什么需要它:
我正在使用号召性用语系统,在该系统中,用户可以在他想要的页面上放置一些特定的模式活动,只需使用这些简单的标签或选择将显示它的页面即可。
之后,我会将选定的 HTML 附加到视图,然后再将其发送给用户。该系统适用于无法编辑视图的用户,因为他们无法使用 HTML.
编辑 2
经过一些研究,我尝试实现自定义 RazorView
,代码是 here 和索引视图 HTML,但现在我有两个问题:
第一个是我的索引视图有一些来自数据库的 HTML 并使用我的 ViewModel 上的变量放置在那里,而不是将号召性用语 HTML 放置在我的索引视图的末尾,它被放置在 ViewModel 变量之前。第二个问题是 HTML 被复制而不是被替换。这是结果的图片:
您可以为此使用 HtmlHelper 扩展:
http://tech.trailmax.info/2012/08/creating-custom-html-helper-in-mvc3/
我建议如下:
- 在您的模板(最有可能的布局)中定义一个容器,它将接收用户决定通过管理面板 "drop" 放入其中的任何内容。
- 您让视图知道有一些东西可以通过 ViewBag 显示。
- 视图使用您传递的信息来呈现所需的内容。
它的呈现方式是 HTMLHelper 扩展的用武之地。您可以创建一个扩展方法,根据您传递给它的信息呈现部分视图,或者您可以根据所需的小部件有选择地调用一组扩展方法.