[英]C# in Page_Load puts code on top of <html>
更具體地說,我使用C#
和.aspx
文檔制作了一個小型網頁。 我在Page_Load
內的文檔的<head>
部分中放入了所有C#
代碼,如下所示:
<script language="C#" runat="server">
protected void Page_Load(Object s, EventArgs e) {
Response.Write(@"<div class=""header"">Foo Bar</div>");
...
}
</script>
這可以以某種方式起作用,但是問題在於,由此生成的html會塞在文檔的開始<html>
標記頂部,這會導致字符設置損壞(不讀取meta標記?),並且不應該發生奇怪的事情即將發生。 我是使用ASP.NET
新手,這很明顯。 我將所有語句放在哪里,以便可以使用<%
分隔符從<body>
訪問它們?
你會把它們放在體內。 這個特定的代碼除了直接寫到放置它的地方外,無非是做其他事情。
<body>
<%= @"<div class=""header"">Foo Bar</div>"; %>
</body>
我敢肯定這只是對某種東西的測試,但是如果您想寫到頁面中的特定位置,最好使用標簽或文字控件:
<head>
<script language="#C" runat="server">
<script language="C#" runat="server">
protected void Page_Load(Object s, EventArgs e)
{
this.lblWriteToMe.Text = @"<div class=""header"">Foo Bar</div>");
// ...
}
</script>
</head>
<body>
<asp:Label ID="lblWriteToMe" runat="server" />
</body>
</html>
編輯:為了將文本放置在html塊中,您可以像在第一個示例中一樣將其直接放入要在其中顯示的html塊中。 這是一種非常“經典的asp”方法,盡管MVC將這一概念帶回來了。 頂部的腳本標簽可以保存所有方法/事件定義和全局變量/屬性或其他內容,但是當您使用Response.Write
或<%=
,它將在出現時立即輸出。 請記住,標准的Webforms頁面具有必須考慮的事件生命周期, Response.Write
可能會干擾該事件的生命周期。 如果在方法或事件中生成了輸出,則最好將結果發布到控件中。 這將使控件能夠確定html塊中的正確渲染順序,因為它出現在Page_Render
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.