这可能是这里有史以来最简单的问题。我正在使用Visual Studio 2010自学asp.net。但是我无法通过我的教程的第一个例子,并且不知道为什么。我只是无法在代码隐藏中启动Page_Load事件。非常简单的例子如下:
的Default.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>
default.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
当我添加&lt;%MyLabel.Text =“Hello,World!” %GT;到default.aspx,标签已填充。我无法在代码隐藏中的Page_Load事件中使用任何(response.writes等)。
很抱歉打扰这样的事情,但在我解决这个简单问题之前我无法前进。而且我很难过。
答案 0 :(得分:6)
它没有用,因为你没有告诉它使用后面的代码。 aspx文件中的第一行应为:
<%@ Page Title="Home Page" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="YourAppName._Default" %>
MSDN ASP.NET Web Page Code Model
此外,与其他人一样,您需要AutoEventWireup="true"
或在Handles Me.Load
添加Page_Load
。
此外,如果您只是在学习...... ASP.NET MVC是一种更好的方式来浏览Webforms。
答案 1 :(得分:3)
Protected Sub Page_Load(ByVal sender as Object, by Val e As System.Eventargs) Handles Me.Load
您需要添加“Handles Me.Load”,以便在触发Page.Load事件时运行此方法。
答案 2 :(得分:2)
我认为AutoEventWireup属性可能是罪魁祸首,请参阅.net论坛上的解释:
Auto event wireup forum post on asp.net
TLDR;将其设置为“true”,看看是否能解决您的问题。另外,尝试研究.NET MVC,因为教自己webforms将非常适合支持遗留应用程序,但新产品的趋势往往是MVC框架。