问题标签 [htmltextwriter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1155 浏览

actionscript-3 - Actionscript 3.0 中损坏的 htmlText - 使用 string.substring 递增显示的时髦显示

这是 actionScript 3.0 中的 textField.htmlText 和我为它制作的类的问题。

为了不发布我的整个课程,我设法将问题归结为一个看似愚蠢且几乎不可能克服的问题。似乎 TextFields(特别是使用 ActionScript 创建的)对于由

其中长度是一个不断增加的增量。然而,让我们举一个更具体的例子。首先,我们在 .fla 文件的第 1 帧上有一些随机字符串:

使用我的类,它需要这个字符串,对于 X 关键字,在这些词周围应用 Y HTML 标签:

这需要 Text0(我们仍处于第 1 帧的动作中)并对其执行以下操作:

我假设所有这些 HTML 标签都是正确的。然后,我们这样做:

它完全按照我想要的方式显示(这张图片的右下角)[i49.tinypic.com/2upts1v.jpg]。添加 http:// 以查看它。

然后,我删除上面的代码行,然后试试这个:

而且,它就像做 textBox.htmlText = Text0;

然后,我们尝试一些新的东西。我们使用 ActionScript 创建一个 textField,并对其应用相同的事件侦听器:

它会产生您在这张图片的中心看到的东西。[ i49.tinypic.com/2upts1v.jpg ]。添加 http:// 以查看它。此外,当它键入时,它会频繁且迷失方向地改变颜色。我做了一些跟踪,我意识到 myTextField 的 htmlText 在它的开头有额外的标签。这是其中一条痕迹的快照:

我已经意识到,在整个过程中,放置在舞台上并设置为渲染 HTML 标签的文本字段将保留它的开始标签

在那里,只需对里面的指定部分进行更改。但是,对于添加了 VIA Actionscript 3.0 的文本框,它会随着 writeText 函数的继续而更改上述任何起始标记,并且 subString 开始包含越来越多的 HTML 标记。

有谁知道我错过了什么?我需要定义一个属性来消除这种奇怪的效果吗?

此外,如果解释太长,这是一个 .fla 会产生与我一直遇到的完全相同的问题。中间的文本字段是问题所在。右下角的 textField 没有问题。

如果您无法处理为 CS3/4 制作的 .fla,请执行以下操作:

到目前为止,我已经尝试在 textField 定义的正下方为 myTextField 设置 TextFormat。然后我尝试在该字段之外设置一个特定的 TextFormat 。我尝试将 defaultTextFormat 设为一种新格式,我尝试在 writeText 函数中重置样式表……这对我来说有点像后勤方面的噩梦。我不知道如何阻止 .fla 中奇怪的颜色变化......

然而,问题不仅仅发生在颜色上。它以粗体、斜体等方式发生,您将其放入函数中并对其进行类型编写效果。但是,如果您只是设置 htmlText = x,那么它看起来还不错。

有任何想法吗?

编辑:使用粗体、斜体、下划线等实现相同的东西似乎有一个小问题。如果有人对如何使用上述文本执行此操作有任何想法,或者使用带有粗体、斜体的 htmltext 创建类似的效果等 - 在这里回答!

0 投票
2 回答
1842 浏览

asp.net - System.Web.UI.Control 中 HtmlTextWriter 的替代品?

您可以在 Web 应用程序用户控件中使用 FluentHTML 或其他替代方法吗?

您可以像 System.Web.UI.UserControl 一样将标记文件放在 System.Web.UI.Control 中,但没有 Page 对象的负担吗?

我想减少以下代码的行数:

谢谢

0 投票
3 回答
1024 浏览

c# - 确保 ScriptControl 中元素的唯一 ID 属性

我正在创建一个基于 ScriptControl 的控件,并且我正在覆盖这样的Render方法:

我的问题是,如果我想为 div 分配一个 ID 属性并让它在页面上是唯一的,即使我的控件有多个实例,该怎么办?

我看过其他人的代码是这样做的:

这将防止我的控件实例之间的命名冲突,但是如果我已经在页面的其他地方创建了一个恰好具有相同 ID 的 div 怎么办?

我还听说过实施 INamingContainer。这适用于这里吗?我怎么能用它?

更新

我通过覆盖CreateChildControls和添加实际控件来解决这个问题,而不是直接呈现 HTML。在这种情况下,INamingContainer 就完成了它的工作。但是,我仍然很好奇是否有办法解决我原来的问题(直接渲染元素的唯一 ID)。

0 投票
2 回答
3736 浏览

asp.net - 使用 .ashx 生成 ASP.Net 服务器控制代码

我正在尝试采用以前在完整 .aspx 页面上的现有代码,并在 .ashx 处理程序中执行相同的操作。

该代码创建了一个 HtmlTable 对象,将行和单元格添加到这些行,然后将该 html 表添加到 .aspx 的控件集合中,然后将其添加到页面上已经存在的 div 中。

我试图保持代码的完整性,但不是将控件放入 div 中,而是实际生成 html,然后我会以可通过 AJAX 客户端调用的一大块文本返回它。

当我尝试使用 InnerHtml 属性时出现 HtmlTable 错误(说它不受支持),并且当我尝试 RenderControl 时,在首先创建一个 TextWriter 和下一个 HtmlTextWriter 对象后,我收到错误页面不能为空。

有没有人这样做过?有什么建议么?

0 投票
1 回答
775 浏览

c# - 获取控件的 HtmlTextWriter

是否有可能得到 HtmlTextWriter控制?
如果没有,那么我如何RenderEndTag在后面的代码中调用控件?

我的应用程序遇到问题。我扩展了列表框用户控件并覆盖了它的RenderEndTag事件。

如果我通常在网页内使用新的列表框(Mylistbox),一切正常。但是当我将 Mylistbox 放入 aWebusercontrol并将其包含Webusercontrol在 WebPage 中时,RenderEndTag由于某种原因不会调用控件的。

所以我猜我应该明确调用控件的“RenderEndTag”。为此,我需要通过HtmlTextWriter...

0 投票
1 回答
1212 浏览

c# - 是否可以向 HtmlTextWriter WriteBreak 添加属性

使用 HtmlTextWriter.WriteBreak 方法时是否可以将类添加到 br 标记?

我需要一个兼容 xHtml 的 html 输出,因此 WriteBreak 在写入时非常完美

我想在 br 中添加一个类,以便我有

0 投票
2 回答
14054 浏览

.net - 将 HtmlTextWriter 的内容转换为字符串

我有一个第三方工具,它使用 HtmlTextWriter 的 RenderBeginTag、RenderEndTag 和 AddAttribute 方法通过代码创建一个 img 标签。我想将生成的 HTML 转换为字符串。我尝试了此处提到的反射方法,但出现错误“无法将'System.Web.HttpWriter'类型的对象转换为'System.IO.StringWriter'类型”。HtmlTextWriter 的 InnerWriter 类型是 HttpWriter 类型。

关于如何将输出 html 复制到字符串中的任何想法?

补充:来自第三方控制的代码

0 投票
2 回答
4280 浏览

asp.net-mvc - 在 ASP.NET MVC 中使用 HtmlTextWriter

我正在迁移一些HtmlTextWriter广泛用于呈现 UI 元素的旧代码。

我正在迁移代码以使用 ASP.NET MVC 1.0。据我所知,我没有使用任何HtmlTextWriter特定功能(例如缩进)。

目前,我正在使用包装器方法返回由以下生成的字符串HtmlTextWriter

我的问题是:

  1. 我试图HtmlTextWriter从 ASP.NET MVC 视图中获取实例,但显然即使是 HtmlHelper 也不使用它。我想念什么吗?

  2. 每次调用GenerateHtml都会生成小的 HTML 片段,一般不超过 1000 个字符,但调用次数可能很多。是否值得将HtmlTextWriter依赖代码重写为 StringBuilder?或者相反,如何创建一个HtmlTextWriter将在所有调用中使用的实例(并在迭代结束时刷新)。

0 投票
1 回答
1568 浏览

asp.net - 在 ASP.NET 2.0 中,如何从呈现的页面/控件输出中删除额外的制表符和换行符?

我一直在研究这个。我发现了几个关于这个主题的资源,它们都倾向于使用相同的方法 - 覆盖 Page.Render,使用 HtmlTextWriter 将输出转换为字符串,然后使用一系列编译的正则表达式来删除额外的空格。这是一个例子

嗯,我试过了,它的工作原理......但是......

在 Safari 5.0 中,这似乎会导致加载图像时出现各种性能问题并出现“服务器太忙”错误。IE 7、FireFox 3.6 和 Google Chrome 6.0 似乎工作正常,但我没有对服务器进行太多压力测试。有时页面生成的时间似乎有滞后,但是一旦将html发送到浏览器,页面就会快速显示。

无论如何,当您考虑它时,让 .NET 构建所有这些选项卡和换行符只是为了再次使用字符串解析将它们全部删除似乎相当愚蠢 - 删除它们的效率最低的方法。覆盖 HtmlTextWriter 并将其传递到主页请求上的树中会更有意义,以避免将它们放入输出中 - 从逻辑上讲,在这种情况下应该有性能提升而不是命中。

即使我只能使用这种方法删除 50% 的空白,它仍然会为正则表达式留下更少的工作——这意味着它应该比单独使用正则表达式时表现得更好。

我尝试使用控制适配器并覆盖几个成员

  1. 将对 WriteLine() 的所有调用定向到相应的 Write() 方法
  2. 将 NewLine 属性设置为空字符串
  3. 覆盖 OutputTabs() 方法并简单地删除代码
  4. 覆盖 Indent 属性并返回 0

我还尝试覆盖 RenderChildren、Render、BeginRender 和 EndRender 以传入我的自定义 HtmlTextWriter,但我似乎无法让一个简单的标签控件删除其标签之前的选项卡。我还使用 Reflector 对框架进行了深入研究,但我根本无法弄清楚这些字符是如何生成的——我以为我使用的是“包罗万象”的方法,但显然我遗漏了一些东西。

无论如何,这就是我想出的。此代码未按我希望的方式运行。当然,我也尝试过直接覆盖页面上的各种 Render 方法并传入我的自定义 HtmlTextWriter 的实例,但这也不起作用。

如果您不熟悉控制适配器,只需将下面的 xml 放在 ASP.NET App_Browsers 文件夹中的 .browser 文件中。您可以更改 controlType 以将控制适配器应用于标签或其他东西,以实现较小范围的测试。如果我能做到这一点,如果有必要在我的项目中添加所有控件并不是什么大不了的事。

无论如何,您会认为只有一个简单的配置设置,例如 VerboseHtml="false" 或 PreserveHtmlFormatting="false" 或类似的东西。如果您查看 MSN.com 的输出,他们正在使用与此类似的某种压缩……而且它似乎非常高效。

0 投票
1 回答
13871 浏览

c# - 如何在使用 HtmlTextWriter 渲染时正确添加属性?

我想将 href 属性添加到链接元素。这是我的代码:

它呈现为:

这是我所期望的。

出了什么问题,我该如何解决这个问题?

请不要回答我可以用其他方式组装字符串。我想知道如何使用 HtmlTextWriter 实现这一点