[ZT]后台动态设置前台标签内容和属性

和以前的asp不同,在asp.net中为了彻底的代码分离,我们一般不采用<%=%>嵌入标签中来设置一些属性和内容。 
一般来说有2种情况: 
(一)设置标签的内容,比如<title>这里</title> 
(二)设置标签的属性,比如<body bgcolor=这里> 
(三)动态加载一些script 
先看一下(一)和(二): 
前台 
<title id="mytitle" runat="server"></title> 
<body id="mybody" runat="server"> 
后台 
protected HtmlGenericControl mytitle; 
protected HtmlGenericControl mybody; 
this.mytitle.InnerText="test"; 
this.mybody.Attributes["bgcolor"]="#cccccc"; 
这里说明3点: 
(1)前台标签runat=server是必须的 
(2)HtmlGenericControl的命名空间是System.Web.UI.HtmlControls 
(3).InnerText和.InnerHtml是有区别的 
比如: 
前台 
<span runat="server" id="myspan"></span> 
后台 
this.myspan.InnerText="<b>test</b>" 
得到的结果是 
<span id="myspan">&lt;b&gt;test&lt;/b&gt;</span> 
把后台改为 
this.myspan.InnerHtml="<b>test</b>" 
得到的结果是 
<span id="myspan"><b>test</b></span> 
再来看看动态加载一些script 
一般来说有三种情况 
(1)在前台放置<asp:Literal Runat="server"></asp:Literal>指定位置输出 
(2)后台通过RegisterStartupScript和RegisterClientScriptBlock输出 
(3)Response.Write输出 
举例如下 
(1) 
前台 
<asp:Literal ID="myLiteral" Runat="server"></asp:Literal> 
后台 
this.myLiteral.Text+="<script>alert('test');</script>"; 
查看源代码可以看到原来的 
<asp:Literal ID="myLiteral" Runat="server"></asp:Literal> 
位置变成了 
<script>alert('test');</script> 
(2) 
为了更加清楚看到两个的区别,前台如下 
<form id="Form1" method="post" runat="server"> 
<input type="hidden" value="test" id="myhiden"> 
</form> 
后台如下 
Page.RegisterStartupScript("","<script>alert('RegisterStartupScript:'+document.all.myhiden.value)</script>"); 
Page.RegisterClientScriptBlock("","<script>alert('RegisterClientScriptBlock:'+document.all.myhiden.value)</script>"); 
结果如下:只出现对话框显示RegisterStartupScript:test 
查看源代码如下: 
<form name="Form1" method="post" action="WebForm4.aspx" id="Form1"> 
<input type="hidden" name="__VIEWSTATE" value="dDwtNjU0MzcyMTk1Ozs+NmbLf6dWkF/Q/FLKKsdPPfhFXr0=" /> 
<script>alert('RegisterClientScriptBlock:'+document.all.myhiden.value)</script> 
<input type="hidden" value="test" id="myhiden"> 
<script>alert('RegisterStartupScript:'+document.all.myhiden.value)</script> 
</form> 
两者区别不用多说了吧 
(3) 
我们再加一句Response.Write("test") 
查看源代码发现test字样出现在最前面 
test 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
用它来输出转向代码比较合适 
<script>location.href='page.aspx'</script> 

最后在提醒一下大家,有很多人在给一个控件加js代码的时候会这么写: 
this.mybody.Attributes["onclick"]="<script>alert('test');</script>"; 
这么写是不对的 
应该是 
this.mybody.Attributes["onclick"]="alert('test');"; 
比如你在前台书写<a οnclick=>的时候你会写<a οnclick='<script>alert('test')<script>'>吗? 
道理是一样的! 
但是相反,有的人在 
Page.RegisterStartupScript("","<script>alert('test');</script>");的时候不写里面的<script>也是不行的 
(虽然名字叫Register...Script) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值