C# 如何将HTML分配给代码隐藏中的字符串?
HTML很大。为了将其分配给代码隐藏中的C# 如何将HTML分配给代码隐藏中的字符串?,c#,asp.net,html,C#,Asp.net,Html,HTML很大。为了将其分配给代码隐藏中的字符串,我这样做: string myString=""; myString+= " <h3>Hello</h3>"; myString+=" <p>Name<sup>®</sup> some text"; myString+= "<div class=" + "clear" + "></div>"; . . . . . string myString=s
字符串
,我这样做:
string myString="";
myString+= " <h3>Hello</h3>";
myString+=" <p>Name<sup>®</sup> some text";
myString+= "<div class=" + "clear" + "></div>";
.
.
.
.
.
string myString=string.Empty;
myString = " <h3>Hello</h3>" +
" <p>Name<sup>®</sup> some text" +
"<div class=" + "clear" + "></div>";
string myString=”“;
myString+=“你好”;
myString+=“Name®;一些文本”;
myString+=“”;
.
.
.
.
.
等等。这是一个相当大的和痛苦的维持。我需要指定设计师给出的准确HTML,但在指定时并不准确。页面上的设计搞砸了
有没有一种方法可以让我不必多次编写myString+=
,只需将整个HTML粘贴到我的ASPX页面上,然后一次将其分配给字符串?您可以这样做:
string myString="";
myString+= " <h3>Hello</h3>";
myString+=" <p>Name<sup>®</sup> some text";
myString+= "<div class=" + "clear" + "></div>";
.
.
.
.
.
string myString=string.Empty;
myString = " <h3>Hello</h3>" +
" <p>Name<sup>®</sup> some text" +
"<div class=" + "clear" + "></div>";
string myString=string.Empty;
myString=“你好”+
“Name®;一些文本”+
"";
我不确定你所说的页面设计被搞砸了是什么意思,但我有几点建议
首先,使用StringBuilder构建字符串。第二,看起来您正在丢失attirbutes上的引号,因为您没有转义它们(在双引号前面加一个\)
StringBuilder myString=new StringBuilder();
Append(“helloName®;some text”);
构建字符串后,可以执行
myString.ToString()
从StringBuilder获取完整字符串。最好的方法是将数据从代码移到视图/模板
另一个选项是将HTML片段存储为资源。它允许您从designer复制和复制代码,并按原样存储
在后面的代码中,您将能够通过
Resources.YouResourceName
变数
此外,如果需要传递一些参数,则可以很容易地利用格式字符串
String.Format(Resources.YourResourceName, param1, param2);
最好的方法是将视图与模型分开。在您的情况下,HTML是视图,因此将它们作为XXX.aspx的一部分,然后从代码后面进行适当的数据绑定。我建议在
“
上进行查找替换,将它们转换为”“
,因此您不必手动将其转义。然后在第一行前面加一个@
,这样字符串就被认为是逐字的。之所以将“
转义为”
,而不是\”
,是因为后者在逐字字符串中不起作用。
例如,您的代码如下所示:
字符串myString=@“您好
Name®;一些
text class=”“clear”“>”
只需使用服务器控件包装html
<div runat="server" id="HtmlConteiner">
<h3>
Hello</h3>
<p>
Name<sup>®</sup> some text</p>
<div class="clear">
</div>
</div>
编辑:
写了一封很长的回信后,我突然想到你可能在用一种非传统的方式来做这件事。页面的HTML应该在.aspx中,而不是在代码隐藏(.aspx.cs)中。。将它放在.cs文件中并非不可能,但“通常”HTML将放在.aspx中。为什么?正是因为您描述的问题,维护起来很痛苦!!通常我们会将C代码从HTML中分离出来
在您的示例中,您没有正确处理引号。“应该成为\” 考虑
myString+= "<div class=" + "clear" + "></div>";
myString+=”;
应该是
myString+= "<div class=\"clear\"></div>";
myString+=”;
你也可以考虑这些选项,这取决于你想要达到的目标之一,应该帮助你
1个字符串文本 如果您想添加一个与给定字符串“完全相同”的字符串,可以使用字符串文本。声明字符串时只需粘贴一个@。() 您还需要通过使用“”来逃避您的“” 例如: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>"
string longstring=@“你好Name®;“一些文本”;
字符串longerstring=@“字符串文字以作为基础的元数据格式存储
所有可执行的C#程序。用公共语言定义的元数据格式
规范包括一个表数据库,所有exe文件中都有标题和行
文件夹。元数据文件中有几个预定义的流,包括
#字符串流和#US(用户字符串)流。#US流用于存储
程序员定义的文字。元数据表将偏移存储到此流中。
流本身只是整个流中使用的一系列串联字符
程序的字符串。执行引擎将偏移量和表存储在内存中
然后,当您使用字符串文字时,只需读取#US流中的一个范围。”
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是文件系统中的一个文件
我认为用于转义引号的双引号(“”)是VB.NET语法,\是用于C#?还是双引号特定于C#中的字符串文字?是的,“”特定于字符串文字:-)