如何将HTML赋值给后面代码中的字符串
本文关键字:代码 字符串 HTML 赋值 | 更新日期: 2023-09-27 18:07:18
HTML太大。为了将其分配给代码后面的string
,我这样做:
string myString="";
myString+= " <h3>Hello</h3>";
myString+=" <p>Name<sup>®</sup> some text";
myString+= "<div class=" + "clear" + "></div>";
.
.
.
.
.
等等。它很大,维护起来很麻烦。我需要分配设计者给出的精确的HTML,但是当我分配时它并不精确。网页上的设计搞砸了。
是否有一种方法使用,我不需要写myString+=
多次,我可以把整个HTML粘贴在我的ASPX页面上,并一次将其分配给字符串?
最好的方法是将数据从代码后移到视图/模板中。
另一种选择是将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>®</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>®</sup> some text<div class='"clear'"></div>");
一旦你建立了字符串,你可以做myString.ToString()
从StringBuilder获得完整的字符串。
你可以这样做:
string myString=string.Empty;
myString = " <h3>Hello</h3>" +
" <p>Name<sup>®</sup> some text" +
"<div class=" + "clear" + "></div>";
最好的方法是将视图与模型分开。在您的示例中,HTML是视图,因此将它们作为XXX的一部分。
使用服务器控件包装HTML。
<div runat="server" id="HtmlConteiner">
<h3>
Hello</h3>
<p>
Name<sup>®</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 <类>"类>