在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寻求帮助!你能再检查一下这个问题吗?我刚刚编辑并更改了一些单词以寻求帮助!你能再检查一下这个问题吗?我刚刚编辑并更改了一些单词。请重新回答,非常感谢!我确实有一个使用母版页的想法,但我认为使用这种方式,设计师很难制作模板,所以我想简单地制作一些标记,这样设计师就可以轻松地完成他们的工作!无论如何,这太多了!谢谢你的帮助!你能再检查一下这个问题吗?我刚刚编辑并更改了一些单词以寻求帮助!你能不能再检查一下这个问题,我刚刚编辑并更改了一些单词对不起,我不太明白为什么你不把这个控件添加到代码后面的控件集合中?