Codebehind不起作用

时间:2013-09-24 19:49:36

标签: asp.net

这可能是这里有史以来最简单的问题。我正在使用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等)。

很抱歉打扰这样的事情,但在我解决这个简单问题之前我无法前进。而且我很难过。

3 个答案:

答案 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框架。