Page_Load中的C#将代码置于顶部

时间:2012-06-04 20:31:33

标签: c# asp.net html

更具体地说,我使用C#.aspx文档制作了一个小网页。我在文档的C#部分放置的所有<head>代码都在Page_Load内,如下所示:

<script language="C#" runat="server">
protected void Page_Load(Object s, EventArgs e) {  
     Response.Write(@"<div class=""header"">Foo Bar</div>");
     ...
}
</script>

这在某种程度上有效,但问题是由此生成的html被填充在文档中的起始<html>标记之上,导致字符设置中断(不读取元标记?)并且不应该发生奇怪的事情。我是新手使用ASP.NET而且很明显。我会在哪里放置所有语句,以便可以使用<body>分隔符从<%访问它们?

1 个答案:

答案 0 :(得分:7)

你会把它们放在体内。这个特殊代码除了直接写入您放置它的位置之外没有任何其他功能。

<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块中,就像我在第一个样本中所做的那样。虽然MVC正在回归这个概念,但这是一种非常“经典的asp”方法。顶部的脚本标记可以包含所有方法/事件定义和全局变量/属性等等,但是当您使用Response.Write<%=时,它会在出现时立即输出。请注意,标准的网页表单页面具有必须考虑的事件生命周期,Response.Write可能会干扰该事件生命周期。如果您在方法或事件中生成了输出,那么最好将该结果发布到控件中。这将允许控件在Page_Render中确定html块中正确的渲染顺序。