混合html和C#

时间:2009-06-10 22:38:41

标签: c# asp.net html

我有一些html会出现在每个页面中,所以我把它放在.cs文件中。这段html有很多引号,所以我宁愿不要逃避每个(\“)。这并不难,因为我可以使用find / replace但我想知道。有没有一个很好的方法混合html和CS这样我可以轻松生成页面吗?

8 个答案:

答案 0 :(得分:8)

而不是将您的HTML用C#代码移动到资源文件。这是(对于Visual Studio 2008):

  1. 右键单击项目,选择“添加新项目...”
  2. 选择资源文件。将Resource.resx保留为文件名。将出现一个提示 - 选择yes将文件放在App_GlobalResources文件夹中。
  3. 双击Resource.resx。添加新的字符串项MyHtml。
  4. 在您的代码中,使用Resources.Resource.MyHtml:

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(Resources.Resource.MyHtml);
    }
    

    另请参阅:How to: Create Resource Files for ASP.NET Web Sites

答案 1 :(得分:4)

对于双引号的具体情况,没有更好的方法。通常,您可以使用逐字字符串。他们将处理换行符和除"之外的所有转义字符,这些字符应替换为""

Response.Write(@"<html>
<body>
   <h1 style=""style1"">Hello world</h1>
</body>
</html>");

答案 2 :(得分:3)

为什么不将HTML粘贴到用户控件中,然后将该用户控件添加到使用该HTML的所有页面?

答案 3 :(得分:3)

你在每个页面上都说同样的HTML。您是否考虑过使用包含内容占位符的母版页作为常用内容?您可以将其与King Avitus提到的用户控制理念相结合。

答案 4 :(得分:2)

您可以在asp.net中使用遗留包含指令

然后,您可以将HTML块放在单独的.html文件中。

<!-- #include PathType = FileName -->

答案 5 :(得分:1)

您可以使用单引号执行此操作:

string MyHTML = @"<html>
    <body>
        <div class='foo'>...</div>
    </body>
</html>";

或做双引号:

string MyHTML = @"<html>
    <body>
        <div class=""foo"">...</div>
    </body>
</html>";

答案 6 :(得分:0)

如果使用@string文字,则可以使用2个双引号转义双引号。稍微可读(但不多)......

答案 7 :(得分:0)

您可以使用@来对其进行字面处理,或者您可以查看HtmlTextWriter类以获得更具规划性的方法。