和以前的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"><b>test</b></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>