Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将HTML分配给代码隐藏中的字符串?_C#_Asp.net_Html - Fatal编程技术网

C# 如何将HTML分配给代码隐藏中的字符串?

C# 如何将HTML分配给代码隐藏中的字符串?,c#,asp.net,html,C#,Asp.net,Html,HTML很大。为了将其分配给代码隐藏中的字符串,我这样做: string myString=""; myString+= " <h3>Hello</h3>"; myString+=" <p>Name<sup>&reg;</sup> some text"; myString+= "<div class=" + "clear" + "></div>"; . . . . . string myString=s

HTML很大。为了将其分配给代码隐藏中的
字符串
,我这样做:

string myString="";
myString+= " <h3>Hello</h3>";
myString+=" <p>Name<sup>&reg;</sup> some text";
myString+= "<div class=" + "clear" + "></div>";
.
.
.
.
.
string myString=string.Empty;
myString = " <h3>Hello</h3>" +
           " <p>Name<sup>&reg;</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>&reg;</sup> some text";
myString+= "<div class=" + "clear" + "></div>";
.
.
.
.
.
string myString=string.Empty;
myString = " <h3>Hello</h3>" +
           " <p>Name<sup>&reg;</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>&reg;</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>&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>"
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#中的字符串文字?是的,“”特定于字符串文字:-)