簡體   English   中英

Page_Load中的C#將代碼放在<html>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM