首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ascx.cs文件背后的代码访问ascx控件

从ascx.cs文件背后的代码访问ascx控件
EN

Stack Overflow用户
提问于 2010-09-09 06:53:02
回答 3查看 2.6K关注 0票数 0

这个应该是非常简单的。我正在做一个非ASP.NET的MVC2.0站点。VS2008似乎生成带有<script>区域的控件--我想要代码隐藏在代码背后,所以我手动地将其连接起来。

我有以下几点:

widget.ascx:

代码语言:javascript
复制
<%@ Control Language="C#" ClassName="widget" Codebehind="widget.ascx.cs" Inherits="widget"%>

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

widget.ascx.cs:

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

我从使用代码隐藏文件的ASPX页面复制并粘贴了这些东西,但是当我试图编译时,我得到了Label1 does not exist in this context的错误。

感谢所有在这件事上的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-17 09:21:36

好吧,我一定是以错误的方式创建了控件。我用一个新的模板重新开始,一切都像预期的那样工作。如果您遇到此问题,只需复制您的代码,并尝试要求Visual Studio再次从用户控件模板生成文件。确保右键单击项目名称并添加一个新文件。

票数 0
EN

Stack Overflow用户

发布于 2010-09-09 07:14:11

这是否与其他页面/控件的声明相匹配?

尝试使用codebeside而不是codebeside/ better来查看其他项目文件中的声明。

票数 0
EN

Stack Overflow用户

发布于 2012-12-19 02:03:13

要理解这里发生的事情,重要的是要注意标记文件(.ascx)继承自代码隐藏文件(.ascx.cs),并且可以访问它的非私有字段。反之亦然:您不能从代码隐藏中引用仅在标记文件中定义的对象。在您的示例中,也可以通过在widget.ascx.cs文件中放置以下内容来解决此问题:

代码语言:javascript
复制
protected Label Label1;

但是,什么!当您让Visual Studio重做该控件时,您可能在.ascx.cs文件中看不到任何这样的行。Visual Studio管理和维护第二个代码隐藏文件,即.ascx.designer.cs文件。public partial class widget中的partial表示允许在多个文件中定义控件的代码。您管理.ascx.cs文件,而Visual Studio管理.ascx.designer.cs。在标记文件中添加、移除和重命名控件时,Visual Studio应在设计器代码隐藏文件中添加、移除和重命名关联的基类字段。如果您删除、编辑或排除了此文件,则可能无法访问Label1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3672512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档