2

更具体地说,我使用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>使用<%分隔符访问它们?

4

1 回答 1

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 块中,就像我在第一个示例中所做的那样。这是一种非常“经典的 asp”方法,尽管 MVC 将这个概念带回来了。顶部的脚本标签可以保存所有的方法/事件定义和全局变量/属性或其他任何东西,但是当你使用它时Response.Write<%=它会在它出现时立即输出。请记住,标准 Web 表单页面具有必须考虑的事件生命周期,并且Response.Write可能会对其产生干扰。如果您在方法或事件中生成了输出,最好将该结果发布到控件中。这将允许控件确定在 html 块中出现时的正确呈现顺序Page_Render

于 2012-06-04T20:37:25.720 回答