代码之家  ›  专栏  ›  技术社区  ›  jeffcook2150

从codebhind访问ascx控件ascx.cs公司文件

  •  0
  • jeffcook2150  · 技术社区  · 14 年前

    <script> 区域——我想要代码隐藏,所以我已经手动连接了它。

    我有以下几点:

    <%@ Control Language="C#" ClassName="widget" Codebehind="widget.ascx.cs" Inherits="widget"%>
    
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    

    namespace webapp
    {
      public partial class widget : System.Web.UI.Control
      {
        protected void Page_Load(object sender)
        {
            Label1.Text = Session["user_id"].ToString();
        }
      }
    }
    

    我从使用codebhind文件的ASPX页面复制并粘贴了这些内容,但是当我尝试编译时,我得到的错误是 Label1 does not exist in this context

    3 回复  |  直到 14 年前
        1
  •  0
  •   eglasius    14 年前

    与其他页面/控件的声明匹配吗?

    请尝试使用codebeand而不是codebeard/更好地查看其他项目文件中的声明。

        2
  •  0
  •   jeffcook2150    14 年前

        3
  •  0
  •   maxwellb    12 年前

    要理解这里的情况,必须注意标记文件(.ascx)继承了代码隐藏文件(。ascx.cs公司). 而不是相反:不能引用定义的对象 在标记文件中。在您的示例中,通过在小工具.ascx.cs文件:

    protected Label Label1;
    

    但是,什么!当您让visualstudio重新执行控件时,您可能在您的应用程序中看不到任何这样的行。ascx.cs公司文件。visualstudio管理和维护第二个代码隐藏文件。ascx.designer.cs公司文件。这个 partial public partial class widget 表示允许在多个文件中定义控件的代码。你来管理这个。ascx.cs公司文件,VisualStudio管理。ascx.designer.cs公司. 当您从标记文件中添加、删除和重命名控件时,VisualStudio 应该