更具体地说,我使用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>
分隔符从<%
访问它们?
答案 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块中正确的渲染顺序。