【发布时间】:2017-05-11 01:43:44
【问题描述】:
我想知道是否可以在将视图 HTML 发送到浏览器之前对其进行修改。
我想创建一个自定义标签编译器,我可以在其中插入一个简单的标签作为<my-parsing-tag></my-parsing-tag> 在视图上并将其替换为某些特定的 HTML。
我已经在使用OnActionExecuting 和OnActionExecuted 过滤器对上下文执行一些操作(更改 ViewBags、视图名称、会话等),我也尝试在那里执行此操作,但我找不到获取 HTML 的正确位置,我什至不知道是否可以这样做。
是否有可能或者我需要将我的视图 HTML 存储在数据库中以完成我需要的操作?
编辑
正如@Juan 所问,我为什么需要它:
我正在使用号召性用语系统,用户可以在他想要的页面上放置一些特定的模态活动,只需使用这些简单的标签或选择将显示它的页面。
之后,我会将选定的 HTML 附加到视图中,然后再将其发送给用户。该系统适用于无法编辑视图的用户,因为他们不使用 HTML。
编辑 2
经过一些研究,我尝试实现自定义RazorView,代码是here,带有Index View HTML,但现在我有两个问题:
第一个是我的索引视图有一些来自数据库的 HTML,并使用我的 ViewModel 上的 vars 放置在那里,而不是在我的索引视图的末尾放置调用操作 HTML,而是放置它在 ViewModel 变量之前。第二个问题是 HTML 被复制而不是被替换。这是结果的图像:
【问题讨论】:
-
为什么要重新发明轮子?您需要对“自定义”标签做什么?
-
@Juan,我已经用解释更新了我的问题。
-
这是否意味着用户将在某个字段中键入它并在运行时替换它?我不确定我是否理解。
-
假设用例就是 Juan 所说的,你可以使用 HtmlHelper 上的 Extension 方法,并使用 TagBuilder 随意操作视图 - docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/…
-
@Juan,我将有一个管理页面,用户将在其中选择他想要包含的页面,比如说一个时事通讯表单,用户可以从组合框中选择主页,或者他可以编辑查看并包含自定义标签。如果我使用第一个选项或第二个选项,我需要编辑 HTML 响应并包含表单,然后再将其发送到浏览器
标签: c# html asp.net-mvc-3