c# - 在我的 ASP.NET 代码隐藏中使用 StringBuilder 编写 HTML 是一个好习惯吗?

标签 c# asp.net stringbuilder

我很想听听其他开发人员对我通常采用的方法的看法。我有一个 Web 应用程序,asp.net 2.0,c#。

我通常做的是写出下拉菜单、表格、输入控件等。在后面的代码中使用 StringBuilder 并写出类似 sb.Append("

我发现自己没有使用很多 .net 控件,因为我通常在代码后面写出 html。当我想使用 jQuery 或调用 JavaScript 时,我只是将该函数调用放在我的 sb.Append 标记中,例如 sb.Append("td...onblur='fnCallJS()'。

我已经非常适应这种方法了。对于数据访问,我使用 EntitySpaces。

我只是有点好奇这种方法是否严重错误,好吧,这取决于上下文、好的、学习 3.0 的时间等等。我对学习很感兴趣,只是在寻找一些输入。


编辑

阅读此处的评论后,听起来我应该看看 MVC。我还没有这样做。这样做的唯一犹豫是现有项目就是现有项目。已经有很多代码按照我解释的方式完成了,很难想象改变它会涉及什么,这样做的好处,以及只是学习这需要什么。

我要从评论中拿走的另一件事是,我后面的代码实际上不应该包含太多 sb.Append 代码,而现在它在许多函数中都充满了它。对我来说这并不困惑,但那是因为我知道每个函数的作用并且可以查看它并看到,哦,写出 x、y 和 z。

我经常在 .aspx 部分有一个 div,然后在后面的代码中使用 StringBuilder 构建它的 .innerHtml。

再次感谢您的评论。我边读边思考。

最佳答案

I typically write out the html in the code behind.

那部分有点奇怪,我不建议将其用于网络表单。如果您想这样做,请考虑使用 asp.net mvc 项目。

在网络表单中,您确实希望 html 的内容与标记而不是代码一起存在。两者应该保持分开。您也不希望包含整个页面的巨大 stringbuilder。这将迫使您将整个页面保存在内存中 两次(一次用于 stringbuilder 字节,一次用于最后构建的字符串),而不是在构建页面时将其写入响应流。这意味着每个请求需要更多的内存,这真的会扼杀可伸缩性。

为此,我会将您的 stringbuilder 代码的不同部分抽象为您可以在 aspx 标记中使用的自定义/用户控件。这些控件可以使用 stringbuilder 来创建它们的输出。这意味着您只需要在内存中保留足够的 html 标记即可一次呈现一个控件。它还允许您更轻松地跨页面甚至站点重用通用标记。

关于c# - 在我的 ASP.NET 代码隐藏中使用 StringBuilder 编写 HTML 是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2512887/

相关文章:

c# - 在外部 C++ 库中检索入口点列表?

asp.net - ASP.NET错误对象未设置为引用

asp.net - Identity 示例项目中的 DataProtectionProvider

java - Stringbuilder 不能追加空格?

c# SendMessage 和 Skype 问题

c# - 将按钮的名称传递给文本 block

java - 我怎样才能让 g.drawstring 处理\n?

java - 在给定情况下使用 StringBuilder 构建字符串的最佳实践是什么?

c# - 如何将 GetStringAsync 结果反序列化为翻译文本

asp.net - 从 Asp.Net Webmethod 获取 Json 数据并在 angularJS 中使用