1

这可能是这里问过的最简单的问题。我正在使用 Visual Studio 2010 自己学习 asp.net。但我无法超越本教程的第一个示例,也不知道为什么。我只是无法在代码隐藏中触发 Page_Load 事件。非常简单的例子如下:

默认.aspx:

<@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master"                AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>


<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Label ID="MyLabel" runat="server"></asp:Label>
</asp:Content>

默认.aspx.vb

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender as Object, by Val e As System.Eventargs)
    MyLabel.Text = "Hello, World!"
End Sub

End Class

当我添加 <% MyLabel.Text = "Hello, World!" %> 到 default.aspx,标签被填充。我无法让任何东西(response.writes 等)在代码隐藏的 Page_Load 事件中工作。

很抱歉打扰这样的事情,但在我弄清楚这个简单的问题之前,我无法继续前进。我很难过。

4

3 回答 3

6

它不起作用,因为您没有告诉它使用后面的代码。您的 aspx 文件中的第一行应该是:

<%@ Page Title="Home Page" Language="vb" MasterPageFile="~/Site.Master"  AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="YourAppName._Default" %>

MSDN ASP.NET 网页代码模型

此外,就像其他人提到的那样,您需要AutoEventWireup="true"Handles Me.Load在您的Page_Load.

此外,如果您只是在学习.... ASP.NET MVC 是一种更好的方式来浏览 Webforms。

于 2013-09-24T19:56:58.387 回答
3
Protected Sub Page_Load(ByVal sender as Object, by Val e As System.Eventargs) Handles Me.Load

您需要添加“Handles Me.Load”,以便在触发 Page.Load 事件时运行此方法。

于 2013-09-24T19:53:42.903 回答
2

我认为 AutoEventWireup 属性可能是罪魁祸首,请参阅 .net 论坛上的解释:

asp.net 上的汽车事件联线论坛帖子

TLDR;将其设置为“true”,看看是否可以解决您的问题。另外,尝试研究 .NET MVC,因为自学 Web 表单将非常适合支持遗留应用程序,但新产品的趋势往往是 MVC 框架。

于 2013-09-24T19:54:30.920 回答