0

我使用返回 IDisposable 的 HTML 帮助程序来创建我在应用程序中经常需要的特定 DIV 结构。此类的构造函数创建打开的 div,而 Dispose 方法创建关闭的 div。现在我需要保护我的应用程序,并且我希望在某些情况下不要创建这个结构,但如果它的范围也没有呈现,我还需要在使用和结束之间产生的每种 HTML。

我做的第一件事是将在 ViewContext 中找到的 TextWriter 替换为 dummy :

_helper.ViewContext.Writer = new StringWriter(new StringBuilder());

它适用于直接使用 ViewContext Writer 呈现 HTML 的每一段代码,但不适用于其他代码(原始 HTML 和其他帮助程序)

所以问题是:我们如何防止 Asp.net 视图在 using 块的范围内呈现 HTML?

4

2 回答 2

3

恐怕目前没有办法阻止using块的内容被渲染。无论如何,这不是这个区块的初衷。如果你想阻止某些东西被渲染,你可以考虑使用一个if语句来代替。

于 2013-02-28T22:29:06.610 回答
1

我没有给你的示例代码,这个想法很老套,但如果你有大量需要保护的东西并且没有时间添加条件逻辑,那么它可能会起作用。

如果您使用应用程序的 Response.Filter 去除 html 会怎样?然后在您的构造函数和 dispose 方法中,如果用户无权查看内容,则输出一些易于查找的元素,您可以使用正则表达式替换或使用 Html Agility Pack 解析/修改 DOM,然后再将流发送到浏览器。

于 2013-02-28T22:39:29.473 回答