如何将HTML赋值给后面代码中的字符串

本文关键字:代码 字符串 HTML 赋值 | 更新日期: 2023-09-27 18:07:18

HTML太大。为了将其分配给代码后面的string,我这样做:

string myString="";
myString+= " <h3>Hello</h3>";
myString+=" <p>Name<sup>&reg;</sup> some text";
myString+= "<div class=" + "clear" + "></div>";
.
.
.
.
.

等等。它很大,维护起来很麻烦。我需要分配设计者给出的精确的HTML,但是当我分配时它并不精确。网页上的设计搞砸了。

是否有一种方法使用,我不需要写myString+=多次,我可以把整个HTML粘贴在我的ASPX页面上,并一次将其分配给字符串?

如何将HTML赋值给后面代码中的字符串

最好的方法是将数据从代码后移到视图/模板中。

另一种选择是将HTML片段存储为资源。它允许您从设计器中复制和传递代码并按原样存储。

在后台代码中,您将能够通过

以字符串的形式访问整个文件内容
Resources.YouResourceName 

变量。

另外,如果需要传递一些参数,那么利用格式字符串也很容易。

String.Format(Resources.YourResourceName, param1, param2);

编辑:写了这么长的回信,我突然想到你可能是在用一种非常规的方式来做这件事。页面的HTML应该在.aspx中,而不是在后面的代码(.aspx.cs)中。把它放在。cs文件中并不是不可能的,但"通常"HTML应该放在。aspx文件中。为什么?正是因为你所描述的问题,维护起来很痛苦!!通常我们会把c#代码从HTML中分离出来…


在您的示例中,您没有正确地处理引号。"应该变成'"

考虑
myString+= "<div class=" + "clear" + "></div>";

应该是

myString+= "<div class='"clear'"></div>";

你也可以考虑这些选项,这取决于你想要达到的目标,以下其中一个应该可以帮助你

1字符串字面值

如果你想添加一个字符串"exactly",你可以使用字符串字面量。你所要做的就是在声明字符串时加上一个@。(http://www.dotnetperls.com/string-literal) .

你还需要转义你的",使用"

例如:

string longstring = @"<h3>Hello</h3><p>Name<sup>&reg;</sup> some text<div class=""clear""></div>";
string longerstring  = @"<p>String literals are stored in the metadata format that underlies
all executable C# programs. The metadata format defined in the Common Language
Specification includes a database of tables with headers and rows in all exe
files. There are several predefined streams in the metadata files, including the
#Strings stream and the #US (user strings) stream. The #US stream is used to store
programmer-defined literals. The metadata tables store offsets into this stream.
The stream itself is simply a concatenated series of characters used in the entire
program's strings. The execution engine stores the offsets and tables in memory
and then simply reads a range in the #US stream when you use the string literal.</p>"

2资源

但是如果你只存储页面的静态部分,即HTML片段,你可以使用。resx资源(http://msdn.microsoft.com/en-us/library/ekyft91f(v=vs.80).aspx)…或者

3服务器端包含

甚至可能包括服务器端

   <html>
   <body>
        <%         
          Response.WriteFile ("Yourfile.inc")
        %>
   </body>
   </html>

Yourfile的地方。Inc是文件系统上的一个文件

http://support.microsoft.com/kb/306575

我不确定你说的页面设计搞砸了是什么意思,但是我有一些建议。

首先,使用StringBuilder构建字符串。其次,如果没有对属性进行转义(在双引号前加一个'),就好像丢失了属性上的引号。

StringBuilder myString = new StringBuilder();
myString.Append("<h3>hello</h3><p>Name<sup>&reg;</sup> some text<div class='"clear'"></div>");

一旦你建立了字符串,你可以做myString.ToString()从StringBuilder获得完整的字符串。

你可以这样做:

string myString=string.Empty;
myString = " <h3>Hello</h3>" +
           " <p>Name<sup>&reg;</sup> some text" +
           "<div class=" + "clear" + "></div>";

最好的方法是将视图与模型分开。在您的示例中,HTML是视图,因此将它们作为XXX的一部分。

使用服务器控件包装HTML。

<div runat="server" id="HtmlConteiner">
    <h3>
        Hello</h3>
    <p>
        Name<sup>&reg;</sup> some text</p>
    <div class="clear">
    </div>
</div>

和ace HTML如下

string htmlContent = HtmlConteiner.InnerHtml;

我建议对您的"进行查找-替换以将它们转换为"",因此您不必手动转义它们。然后在第一行加上@前缀,这样字符串就被视为逐字。将"转义为""而不是'"的原因是后者在逐字字符串中不起作用。例如,您的代码看起来像:

字符串myString = @" & lt; h3> Hello

& lt; p>Name, reg; & lt;/sup>有些

text <类>"