9

我有一个 QuestionControl.ascx 和一个 QuestionControl.ascx.cs 代码隐藏在我复制到一个新项目的文件中。当我构建项目时,代码隐藏文件中对 ascx 中声明的控件的任何引用都会给我这个错误:

“QuestionControl”不包含“rdbtnlstQuestion1”的定义,并且找不到接受“QuestionControl”类型的第一个参数的扩展方法“rdbtnlstQuestion1”(您是否缺少 using 指令或程序集引用?)

这是我的 *.ascx 的顶部:

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

我也尝试过 CodeBehind:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="QuestionControl.ascx.cs" Inherits="QuestionControl" %>

这是代码隐藏文件中我的类的顶部,它不包含在命名空间中:

public partial class QuestionControl : System.Web.UI.UserControl
{
4

6 回答 6

14

尝试删除您的设计器文件。当您打开 ascx 文件时,VS.NET 应该为您重新创建它。过去我遇到过这样的问题,设计器由于某种原因不同步,删除它通常可以解决问题。

于 2010-05-21T15:20:15.843 回答
5

另一种解决方案是:

  • 在设计视图中打开您的 .ascx 页面
  • 右键单击页面上的任意位置并选择刷新

(.ascx.designer.cs 文件可能需要在刷新时关闭才能正常工作)

于 2012-02-02T11:48:30.793 回答
3

在 VS2017 中,.ascx 文件的上下文菜单中没有“转换为 Web 应用程序”选项。相反,您需要选择 .ascx 文件,然后单击上方菜单中的“项目”并选择“转换为 Web 应用程序”(在项目菜单中一直向下。

于 2019-05-21T05:40:31.090 回答
1

对我有用的方法列在另一个 SO 答案中,但我找不到它,所以我在这里重复一遍。

尝试删除您的“ReflectedSchemas”文件夹

C:\Users\YOURUSENAME\AppData\Roaming\Microsoft\VisualStudio\15.0_079f391b\ReflectedSchemas

这对我有用。有时我会收到“无法识别”的错误,然后我再次删除了这个文件夹。非常感谢OP。多年来一直让我发疯。现在我在 HTML 中没有“曲线”,后面的代码(aspx.cs)中也没有“红条”

于 2018-02-09T15:27:11.493 回答
0

我遇到了问题,例如在 gridview 中创建一个下拉列表。我所做的是在 gv 之外创建 ddl,直到 desinger.cs 识别它,然后将控件移到 gv 内......希望这会有所帮助

于 2013-12-19T17:39:36.297 回答
0

我遇到了同样的问题,代码隐藏无法识别 .aspx 页面上的控件。我正在使用 VS 2012。我右键单击该项目;单击转换为 Web 应用程序;它添加了以前根本不存在的所有设计器文件。我重建了一切,现在很好。

于 2014-12-22T19:34:14.043 回答