在Visual Studio中使用用户控件时,designer.cs存在问题

5

在我的开发过程中,我有一个Web用户控件项目和另一个Web项目,将使用Web用户控件项目中的用户控件。

因此,我将DocControl.ascx文件复制到我的Web项目中,并尝试使用DocControl.ascx的属性。 但是VS不知道控件的属性。因此,当我检查designer.cs时,引用如下:

protected global::System.Web.UI.UserControl Control;

应该是哪一个

protected global::MSN.DocControl Control;

所以我将控件的名称从System.Web.UI.UserControl更改为MSN.DocControl,然后我可以使用DocControl.ascx的属性。

但我的问题是,每当我修改aspx文件(例如在其中放置标签)时,designer.cs中的引用就会变成

protected global::System.Web.UI.UserControl Control;

每次修改aspx文件时,我都必须更改它。那我该怎么办才能不用修改 designer.cs 文件呢?

提前感谢......


@DJKRAZE - 你说的“propagate”是什么意思?抱歉,我不太明白。 - kevin
你在所有引用 protected global::System.Web.Ui.UserControl 的地方都进行了更改吗?你能按CTRL+F在所有文件或整个项目中定位它吗? - MethodMan
那么你现在想说什么?好奇心驱使你不得不做出改变吗?之前它能正常工作吗?你可以使用VS来为你进行更改,不确定你是否知道这一点。 - MethodMan
每当我尝试使用控件时,它在designer.cs默认中是**protected global::System.Web.UI.UserControl Control;,所以我将其更改为protected global::MSN.DocControl Control;。但每当我尝试修改包含该控件的aspx文件时,它又变成了protected global::System.Web.UI.UserControl Control;**。我没有对Web用户控件做任何操作。 - kevin
请看下面我的回答。希望它也能帮到你。 - kevin
显示剩余3条评论
2个回答

3
我已经通过移动解决了这个问题。
protected global::MSN.DocControl Control;

从designer.cs到.cs页面。

因此,无论您进行了任何更改,都将是可以的。

@kokbira ->希望这能帮助您。


1
在我的情况下,注册行中的Src路径有误。这不会导致错误消息,但会生成通用控件而非具体类,出现你描述的相同症状。
我曾经使用了以下代码(其中的Src路径是错误的):
<%@ Register TagPrefix="uc" TagName="Pipes" Src="/Controls/Pipes.ascx" %>
...
<uc:Pipes id="ucPipes" runat="server" />

它生成了这个通用的内容,没有任何控件属性:
protected global::System.Web.UI.UserControl ucPipes;

当我使用正确的路径,即带有类别文件夹的路径时,它可以正常工作:
<%@ Register TagPrefix="uc" TagName="Pipes" Src="/Category/Controls/Pipes.ascx" %>
...
<uc:Pipes id="ucPipes" runat="server" />

并生成了正确的结果,因此所有属性都起作用了:

 protected global::Company.Category.Controls.Pipes ucPipes;

请参考此答案,了解一个糟糕的代码后台名称。https://dev59.com/8Ww15IYBdhLWcg3wmc4J#7001793 - goodeye

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接