代码隐藏中的ASP.NET公共变量在.aspx中不可访问

时间:2016-01-27 13:12:51

标签: asp.net vb.net

这是一个简单的例子,说明这里发生了什么。

Default.aspx

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="default.aspx.vb" Inherits="base._default1" %>

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <% Response.Write(sName) %>
        </div>
        </form>
    </body>
    </html>

和default.aspx.vb背后的代码

Public Class _default1
    Inherits System.Web.UI.Page

    Public sName As String = "Jimmy"

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

End Class

错误是

BC30451'sName'未声明。由于其保护级别,它可能无法访问。 base C:\ Users \ Jimmy \ Documents \ Visual Studio 2015 \ Projects \ base \ base \ teste \ default.aspx 12

问题出在哪里?

1 个答案:

答案 0 :(得分:2)

最大的问题是,您的班级_default1未标记为partial班级。

应该是

Public partial Class _default1
      Inherits System.Web.UI.Page

还有一点是,您的页面指令具有属性AutoEventWireup="false",并且您现在映射页面事件的方式将不起作用。因此将其设置为true而不是AutoEventWireup="true"

您的@Page指令非常奇怪,如下所示。

<%@ Page AutoEventWireup="false" CodeBehind="default.aspx.vb" Inherits="base._default1" %>

总结;以下是您应该解决的问题

  1. 标记班级partial

  2. 设置AutoEventWireup="true"

  3. CodeBehind属性更改为CodeBehind="default1.aspx.vb"

  4. 将您的Inherits媒体资源更改为Inherits="your_namespace._default1"