Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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
在ASP.Net中将html字符串转换为服务器控件_Asp.net_String_Controls - Fatal编程技术网

在ASP.Net中将html字符串转换为服务器控件

在ASP.Net中将html字符串转换为服务器控件,asp.net,string,controls,Asp.net,String,Controls,我有个问题,希望你们能帮忙! 我在代码中有一个字符串,如下所示 string html = "<asp:CheckBox ID=\"CheckBox1\" runat=\"server\" />"; <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> {title_page} </title> <link href=

我有个问题,希望你们能帮忙! 我在代码中有一个字符串,如下所示

string html = "<asp:CheckBox ID=\"CheckBox1\" runat=\"server\" />";
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
      <title>
        {title_page}
      </title>
    <link href="css/temp_css.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="somejs.js"></script>
    <script type=”text/javascript”>
        //code js here
    </script>
   </head>
   <body>
    <div>**{main_menu}**</div>
    <div>**{footer}**</div>
   </body>
</html>
string html=”“;
因此,如何将其插入到aspx页面中,当页面呈现时,它会在我在网页中写入自己的字符串时转换我的字符串

希望你们能帮忙

提前谢谢

让我首先说,这就是为什么我必须使用这种方式,因为我正在做我自己的模板项目 我有一个像index.HTML这样的HTML文件,里面有一些像这样的HTML代码

string html = "<asp:CheckBox ID=\"CheckBox1\" runat=\"server\" />";
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
      <title>
        {title_page}
      </title>
    <link href="css/temp_css.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="somejs.js"></script>
    <script type=”text/javascript”>
        //code js here
    </script>
   </head>
   <body>
    <div>**{main_menu}**</div>
    <div>**{footer}**</div>
   </body>
</html>

{title_page}
//代码js在这里
**{主菜单}**
**{footer}**
大家都可以看到我自己的标记({main_menu},{footer}),我只想在页面呈现时将我的Web用户控件替换为该标记,仅此而已


有什么办法让我不要这样做吗?

你不能像你所展示的那样使用字符串。相反,您必须实例化并添加复选框控件,例如:

ASPX:


更新:在编辑之后,您可能想看一看,即将HTML模板转换为母版页,并将真实内容放在使用该母版页的页面上。

我以前从未见过这样做,所以我甚至不确定这是否可行。然而,这确实是一种糟糕的做法。为什么不直接添加控件而不使用字符串

protected void Page_Init(object sender, EventArgs e)
{
    CheckBox checkBox = new CheckBox();
    checkBox.ID = "CheckBox1";
    Page.Controls.Add(checkBox); // Replace Page with any other Control to add to
}

控件的服务器端标记不仅仅是文本-visual sutdio生成具有正确类型的字段,并在代码中设置不同的属性

当然,这种情况不会像代码示例中那样发生在简单字符串中

如果要动态添加控件,需要在代码隐藏中创建它,并将其添加到代码中的页面(请参阅GenericTypeTea的答案)

您还需要记住,因为您需要在每次回发时重新创建控件(最好在OnInit事件处理程序中完成)

编辑:

从你的编辑中,我了解到你想要完成什么,然而,这是一个非常困难的问题

您需要动态解析并将网页编译为控件,将所有文本内容更改为控件,并处理所有回发等


为什么你不能简单地使用母版页和控件?

一般来说,我同意上面的大多数评论,并建议你看看自己的设计,如果你真的想这样做的话

话虽如此,您的问题让我想到了为什么不使用
Render
事件

当Render事件被覆盖时,开发人员可以将自定义HTML写入浏览器。Render方法将HtmlTextWriter对象作为参数,并使用该参数输出要流式传输到浏览器的HTML此时仍可以进行更改,但这些更改仅反映给客户端。

关于以下内容:-

protected override void Render(HtmlTextWriter output) 
{
    output.Write ("<h3> Hello </h3>");
}
受保护的覆盖无效渲染(HtmlTextWriter输出)
{
output.Write(“Hello”);
}
如果你把你的HTML字符串放在这里,我想它应该可以工作

注1:由于此更改仅反映在客户端上,因此我严重怀疑您如何使用它做任何有用的事情,即使您最终至少让客户端显示您的控件

注2:我从未尝试过这样做,但你的问题让我思考

您想使用

Template.ParseControl


对于我的CMS,我做了一些类似的东西。请参见以下问题:

使用文字:

<code>string html = "<asp:CheckBox ID=\"CheckBox1\" runat=\"server\" />";
Literal lt = new Literal();
lt.Text = html;
ServerDIV.Controls.Add(lt);
</code>
字符串html=”“;
文字lt=新文字();
lt.Text=html;
ServerDIV.Controls.Add(lt);

Ths需要帮助!你能再检查一下这个问题吗?我刚刚编辑并修改了一些words@Chrno爱——写出一个字符串并期望服务器知道它的存在是不可能的。如果您没有使用
runat=“server”
,可以通过使用
Render
事件来实现。Ths寻求帮助!你能再检查一下这个问题吗?我刚刚编辑并更改了一些单词以寻求帮助!你能再检查一下这个问题吗?我刚刚编辑并更改了一些单词。请重新回答,非常感谢!我确实有一个使用母版页的想法,但我认为使用这种方式,设计师很难制作模板,所以我想简单地制作一些标记,这样设计师就可以轻松地完成他们的工作!无论如何,这太多了!谢谢你的帮助!你能再检查一下这个问题吗?我刚刚编辑并更改了一些单词以寻求帮助!你能不能再检查一下这个问题,我刚刚编辑并更改了一些单词对不起,我不太明白为什么你不把这个控件添加到代码后面的控件集合中?