① web程序設計asp.net實用網站開發 第2版 課後習題答案(沈士根版)
先分析原因。
你出現這個錯誤是因為你沒有了解ASP.NET的工作原理。ASP.Net 和php,jsp ,asp等伺服器語言一樣 都是為了生成可供瀏覽器解析的頁面,而可供瀏覽器解析的語言只有HTML。
1,如果你在aspx頁面中插入一個asp:LinkButton 那麼運行頁面後 在瀏覽器中查看源代碼你會發現這個標簽實際被轉為了一個<a>標簽。
2,為什麼你的寫法不會轉換呢?因為首先 傳遞給Literal1.Text 的值在asp.net中作為一段字元串被直接輸出到瀏覽器中。那麼你的寫法到瀏覽器後源代碼中仍然是一個asp:LinkButton 標簽,而這個標簽是無法被瀏覽器正確解析的。
解決辦法:
知道了原因,那麼如果非要按照你的寫法去寫,那麼應該是這樣的:
Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='LinkButton1_Click1'>注銷</a></li><li> </li><li>信息修改</li><li> </li>";
但是當你修改完後發現點擊注銷按鈕依然不能執行!為什麼呢?
因為你的LinkButton1_Click1 事件並沒有在asp.net中被解析為可供瀏覽器識別的js代碼。
如何解決?
在aspx頁面中寫一個asp:LinkButton按鈕:
<asp:LinkButton ID='LinkButton2' runat='server' onclick='LinkButton1_Click1'>注銷</asp:LinkButton>
運行頁面,查看源代碼 看看這個新加的注銷按鈕被解析為了什麼html代碼,大概如下
<a id="LinkButton2" onclick="xxxxx"></a>
將新加的linkbutton 設置不可見屬性
<asp:LinkButton ID='LinkButton2' runat='server' visible="false" onclick='LinkButton1_Click1'>注銷</asp:LinkButton>
重新修改後台代碼
Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='xxxxx'>注銷</a></li><li> </li><li>信息修改</li><li> </li>";
//也就是將標簽的js事件綁定到那個隱藏的注銷按鈕事件上。
希望對你有幫助