首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#中创建动态html的最佳方法

在c#中创建动态html的最佳方法
EN

Stack Overflow用户
提问于 2015-11-24 01:47:00
回答 2查看 8.1K关注 0票数 1

我正在从c#应用程序中生成动态html,通过使用string,HTML标记将被追加并最终形成完整的html。在所有的字符串生成器中,我将用c#对象替换html占位符。

正在构建的html是复杂的,我需要填充来自c#属性的占位符,有时还需要数据库调用。我没有XML,所以不使用XSLT。因为我的html文件庞大和大量的字符串修补程序是必需的。大部分章节都是基于业务逻辑重复的。

现在一切都很好,我想从字符串构建器中移开经过硬编码的html字符串,因为以后维护将很困难。从控制台应用程序中去掉硬编码html的任何最佳建议。

就性能而言,使用大量字符串生成器(至少使用500个字符串生成器)好吗?例如,我的html拆分如下所示

  1. 报头部分
  2. 身体部分 2.1 section1 2.1.1第1.1节 2.1.2第1.2节 2.1.3第1.3款 2.2 section2 2.3 section3 2.4 section4 2.5 section5 3.页脚部分
  3. 温度和条件

我刚才提供了几行代码供您参考。

代码示例:

代码语言:javascript
复制
    htmlStringBuilder.Append("<table class=\"paddingIndendation\" style=\"width: 100%;\" border=\"1\">");
    htmlStringBuilder.Append(string.Format("<tr><td>Location {0}</td><td>:</td><td>{1}</td></tr>", location.LocationNumber, location.AddressLine1));
    htmlStringBuilder.Append(string.Format("<tr><td colspan=\"2\" style=\"text-align:right;\"></td><td>{0}</td></tr>", location.AddressLine2));
    htmlStringBuilder.Append(string.Format("<tr><td colspan=\"2\" style=\"text-align:right;\"></td><td>{0} {1}</td></tr>", location.PostalCode, location.City));
htmlStringBuilder.Append(string.Format("<tr><td colspan=\"2\" style=\"text-align:right;\"></td><td>{0} {1}</td></tr>", this.Id,this.StartEffectiveDate));

我希望将硬编码的html内容移到某个地方(可能是文件或资源文件),并用属性替换占位符。有人能建议最好的方法吗。

EN

回答 2

Stack Overflow用户

发布于 2015-11-24 02:00:30

如果您查看维护预置,实际上您可以使用以下占位符创建HTML文件

代码语言:javascript
复制
<table class="paddingIndendation" style="width: 100%;" border="1">
    <tr>
        <td>Location ~LocationNumber~</td>
        <td>:</td>
        <td>~AddressLine1~</td>
    </tr>
    <tr>
        <td colspan="2" style="text-align:right;"></td>
        <td>~AddressLine2~</td>
    </tr>
    <tr>
        <td colspan="2" style="text-align:right;"></td>
        <td>~PostalCode~ ~City~</td>
    </tr>

在字符串变量中加载字符串,如下所示

代码语言:javascript
复制
string htmlstring = File.ReadAllText("yourhtml.txt");

然后,您可能可以创建一个小函数,在该函数中,可以使用任何属性或数据库调用替换所有这些占位符,如

代码语言:javascript
复制
htmlstring = htmlstring.Replace("~LocationNumber~",location.LocationNumber);
htmlstring = htmlstring.Replace("~AddressLine1~",location.AddressLine1);
htmlstring = htmlstring.Replace("~AddressLine2~",location.AddressLine2);    
htmlstring = htmlstring.Replace("~PostalCode~",location.PostalCode);
htmlstring = htmlstring.Replace("~City~",location.City);
票数 9
EN

Stack Overflow用户

发布于 2015-11-24 02:02:55

我不知道为什么这个问题会被否决。

评论是对的;不管它表现好与否,你在做这件事时都会遇到很多麻烦。因此,StringBuilder确实是错误的做法。如果你无论如何都要这样做,那么它的表现是否好并不重要。你会用更好的方法来做这件事,而把它保持得足够简单,让你维持下去。不管表演是什么,表演都会是。

如果我是你的话,我要做的就是创建一个本地的、私有的网站,使用ASP.NET (如果你愿意的话),然后使用脚本来检索或者搜索你的网站,然后拉下你想要的所有生成的HTML。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33884060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档