【问题标题】:Cannot reference my web usercontrol (ascx) from code behind无法从后面的代码中引用我的 Web 用户控件(ascx)
【发布时间】:2014-08-18 20:53:24
【问题描述】:

我正在尝试在 Visual Studio 2012/ASP.Net/C# 中动态创建用户控件,但是当我尝试在任何其他 aspx 或ascx 页面。我已经尝试重建它并删除命名空间,它似乎应该可以工作,但它没有!

我的 ascx 文件的第一行是这样的:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="AG_Controls_WebUserControl" %>

对应的代码如下:

public partial class AG_Controls_WebUserControl : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

我尝试在一个空白 aspx 页面后面的代码中声明它的实例,如下所示:

AG_Controls_WebUserControl test = new AG_Controls_WebUserControl();

我得到了:

错误 3 类型或命名空间名称“AG_Controls_WebUserControl”可能 找不到(您是否缺少 using 指令或程序集 参考?)

这是漫长的一天,我很累,但这不应该是火箭科学,但我看不出问题出在哪里。非常感谢您的帮助!

【问题讨论】:

  • 你是否包含了用户控件的命名空间?
  • 不,后面的代码中没有声明命名空间,所以它应该可以从项目的其余部分引用
  • 如果您没有包含您可能想要做的命名空间,您是否尝试过将CodeFile="WebUserControl.ascx.cs" 更改为CodeBehind="WebUserControl.ascx.cs" 查看网络应用程序的属性页面,看看是否有默认的命名空间使用那个
  • 尝试创建一个新的用户控件并动态创建一个。如果可行,只需复制/粘贴代码 :) 你说这是漫长的一天,所以我可能会注意到一些太愚蠢的事情
  • 我就是这么做的!实际的用户控件更复杂,所以我只是创建了一个标准的空控件来尝试缩小问题所在。我还尝试将“CodeFile”更改为“CodeBehind”,但控件本身无法编译,我只收到错误消息:“错误 1 ​​无法加载类型“AG_Controls_WebUserControl”。”

标签: c# asp.net webusercontrol


【解决方案1】:

您忘记在 ASPX 页面中包含对控件的引用。如果您在后面的代码中动态创建控件,您仍然需要包含该引用。

<%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>

【讨论】:

  • 我知道这很简单,我想是时候多喝咖啡了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2018-06-11
  • 2017-01-11
  • 1970-01-01
相关资源
最近更新 更多