问题标签 [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 投票
2 回答
562 浏览

c# - .Net HtmlTextWriter 的异常安全/处理?

我正在使用 .NetHtmlTextWriter生成 HTML。

在此示例中,如果在 期间触发了错误异常myObject.GenerateHtml(),我将生成一个不错的错误 html,但它前面会带有一个span从不关闭的开始标记。

我可以像这样重构它

现在我的跨度没有打开,直到我完成了艰苦的工作,但这对我来说看起来很尴尬。有没有办法用 HtmlWriter 回滚?即使我不得不投入大量使用块。

我目前在 .Net 2.0 中工作,但可以讨论 3.5 中的解决方案。

0 投票
4 回答
4644 浏览

.net - 用于呈现 HTML 的流畅界面

在我看来,使用 HtmlTextWriter 呈现 HTML 并不是非常直观,但如果您在 Web 表单中实现 Web 控件,则必须使用它。我认为有可能为此创建一个流畅的界面,该界面看起来更像它输出的 HTML。我想知道人们对我迄今为止提出的语法的看法。

“Tag”、“Text”和“EndTag”是 HtmlTextWriter 类的扩展方法,它们返回它接收的实例,以便可以链接调用。第一次调用“Tag”使用的重载中使用的传递给 lambda 的参数是一个“HtmlAttributeManager”,它是一个简单的类,它包装了一个 HtmlTextWriter 以提供一个索引器,该索引器接受一个 HtmlTextWriterAttribute 和一个字符串值并返回实例,所以可以链接调用。我还为这个类提供了最常见属性的方法,例如“Name”、“Class”和“Id”,这样您就可以将上面的第一个调用编写如下:

再长一点的例子:

希望您能够“破译”此代码段输出的 HTML,至少是这样的想法。

请给我任何关于如何改进语法的想法,也许是更好的方法名称,也许是其他一些方法。

编辑:我认为在不使用流畅界面的情况下查看相同的代码段可能会很有趣,以进行比较:

编辑:我可能应该更明确一点,其中一个目标是它应该产生尽可能少的开销,这就是我限制使用 lambdas 的原因。同样,起初我使用了一个表示标签的类,以便在渲染之前通过语法构建类似于 DOM 树的东西,尽管语法非常相似。我放弃了这个解决方案,因为它会产生轻微的内存开销。在使用 HtmlAttributeManager 类时仍然存在一些这种情况,我一直在考虑使用扩展方法来附加属性,但是我不能使用 indexer-syntax,而且它会使 HtmlTextWriter 的接口膨胀更。

0 投票
3 回答
10237 浏览

asp.net - 使用 HtmlTextWriter 呈现服务器控件?

我正在编写RenderContents()我的 ASP.NET 服务器控件的方法。该方法使用HtmlTextWriter对象来呈现输出内容。对于我正在编写的控件,使用HtmlTextWriter's 方法似乎需要很多代码行来打开和关闭每个标签并将每个属性添加到流中。最后,我觉得我最终会得到比它需要的更长的代码。

我在想,如果我使用一个可链接的类,例如StringBuilder,我的代码会更容易阅读和编写。

我想知道的是,是否有任何理由使用该HtmlTextWriter对象来呈现我的整个控件的内容?除了安全检查(我假设)之外,它还包括确保您不会以错误的顺序编写标签或创建无效标记,我看不出任何原因。

似乎只做这样的事情会更容易:

有什么理由说明这是一个坏主意吗?

更新
响应Mehrdad Afshari的回答:
我并没有过多考虑StringBuilder实例化单独对象的内存要求。为 HtmlTextWriter 制作一个包装器怎么样,这样它就可以被链接起来,这样就不会产生额外的字符串。

0 投票
2 回答
2451 浏览

c# - 如何使 HtmlTextWriter 对象使用空格而不是制表符作为其缩进?

我正在从 WinForm 上运行的代码创建一些 html。我想创建以下html:

我正在使用 System.Web.UI.HtmlTextWriter 类来执行此操作:

这很好用,但是,当我在文本编辑器中打开生成的 html 时,我的缩进看起来太远了,因为它使用的是制表符。有没有办法强制这个类使用多个空格?

0 投票
5 回答
28321 浏览

c# - 如果您不打算从自适应渲染中受益,那么使用 HtmlTextWriter 有什么好处吗?

除了受益于备用设备的自适应渲染之外,编写所有这些代码是否有意义:

当 StringBuilder 可以简单地构建相同的东西时:

0 投票
1 回答
2369 浏览

.net - ASP.NET - 将 Gridview 呈现为 HtmlTextWriter - XLS - 列格式

我正在使用以下代码将 gridview 呈现为 ASPX 页面上的 XLS 文件:

其中一列通常为空,但有时包含一个相当长的整数,例如 2342515123332222 .. 它是条形码类型编号......所以不必对其进行任何数学运算。

长话短说,XLS 把它变成了一个浮点数,这对最终用户来说是垃圾。(~2343218)

我有什么方法可以强制 XLS 中的这一列成为字符串吗?

我不愿意通过任何其他方法生成 XLS ......我的“后备”将是在该列中的每个非空白空白条目之前写一个“#”字符,希望这会强制该列被解释为文本而不是数字。不幸的是,这不是一个理想的解决方案。

0 投票
4 回答
5197 浏览

c# - asp:button 以编程方式创建:EventHandler 不会触发

我正在编写一个具有简单 ASP.NET 表单的 SharePoint Web 部件。我正在使用 HtmlTextWriter 来呈现控件。我遇到的问题是我的按钮似乎没有触发我分配给它的 EventHandler。

我最初在 CreateChildControls 方法中声明了按钮,并连接了事件处理程序:

我已经声明了“submitButton_Click”EventHandler 的功能:

我渲染控件:

最后,我部署 Web 部件。它在目录中显示得很好,当我将它添加到页面时,控件就会显示出来。但是,我会假设当我单击按钮时,它的文本应该从“开始!” “好!” 相反,它什么也不做。我对所有这些技术(C#、Sharepoint 和 ASP.NET)都很陌生,所以我很确定这是我的理解方面的问题,但是尝试从网络上的文章和以前的问题中尝试不同的步骤没有没有解决我的问题。谢谢参观。

编辑:我打开了带有 Web 部件的 SharePoint 页面,按钮的创建方式如下:

看起来根本没有添加 OnClick 值,这就是我认为添加 EventHandler 会做的事情。我是否试图以完全错误的方式添加 OnClick?我也不明白为什么按钮名称与我在代码中声明的名称不匹配。

0 投票
2 回答
831 浏览

c# - C# 和编写 HTML - 最好的方法?

我需要从纯文本构建一个 HTML 文档并将其显示在 webBrowser 中。我在想更好的方法 - 我可以看到 System.Web.UI 中有 HTMLTextWriter 但我无法引用这个命名空间,有人可以建议吗?谢谢

0 投票
8 回答
2188 浏览

c# - C# - 将 HTML 作为字符串编写的面向对象的方式?

我正在尝试以递归方式以编程方式发送目录中所有 dll 文件及其版本的电子邮件。我想使用表格将电子邮件作为 HTML 输出发送。有没有一种很好的面向对象的方式来做到这一点?我讨厌手写所有的标签。

就像是:

0 投票
1 回答
302 浏览

c# - 在 ASP.NET 中呈现服务器控件更有效

我正在为我的服务器控件输出整个 HTML,如下所示:

myStringBuilder 是在单独的私有方法中手动构建的 StringBuilder 对象。

这是一种有效的方法吗?还是将 HtmlTextWriter 传递给我的私有方法并多次调用 HtmlTextWriter.Write() 更好?