C# VWD2010*.aspx.design.cs文件未正确自动生成

C# VWD2010*.aspx.design.cs文件未正确自动生成,c#,visual-studio-2010,umbraco,login-control,loginview,C#,Visual Studio 2010,Umbraco,Login Control,Loginview,昨天,我开始编写C#以开发Umbraco的用户控件,我遇到了一个众所周知的问题,我得到了错误“当前上下文中不存在*名称”。我找到了该特定问题的无数答案,如下所示: ……等等 然而,这些问题都没有帮我解决问题,我的头还在撞墙 然后我发现我的标记和它们的控件被我的*.apsx.cs文件发现,只要我不把它们放在任何非asp:-标记中 我正在尝试使用自定义模板创建一个自定义登录控件,为此我需要-tag。此外,我把它放在LoginView控件的内部 <asp:LoginView ID="Mem

昨天,我开始编写C#以开发Umbraco的用户控件,我遇到了一个众所周知的问题,我得到了错误“当前上下文中不存在*名称”。我找到了该特定问题的无数答案,如下所示:

……等等

然而,这些问题都没有帮我解决问题,我的头还在撞墙

然后我发现我的标记和它们的控件被我的*.apsx.cs文件发现,只要我不把它们放在任何非asp:-标记中

我正在尝试使用自定义模板创建一个自定义登录控件,为此我需要-tag。此外,我把它放在LoginView控件的内部

<asp:LoginView ID="MemberValidation" runat="server"> 
   <AnonymousTemplate>
     <asp:Login ID="MemberLogin" runat="server" OnLoggedIn="MemberLogin_OnLoggedIn">
        <LayoutTemplate>
           <asp:Literal ID="InformationMessage" runat="server"></asp:Literal>
        </LayoutTemplate>
   </AnonymousTemplate>
   <LoggedInTemplate>...</LoggedInTemplate>
</asp:LoginView>

...
我的LiteralControl(以及我拥有的所有其他LiteralControl,这只是一个很小的示例)没有自动注册到*.aspx.design.cs文件中,因此它在*.aspx.cs文件中不可访问,但是如果我删除标记和标记,我的LiteralControl会弹出

然而,我需要这两个标记来使代码按我所希望的那样运行,所以我的问题仍然没有解决:我能做什么?是虫子吗

提前感谢,,
Brinck10

如果我正确理解了您的问题,则文本控件不能由.cs直接访问,只要它位于
匿名模板
布局模板
标记中

如果这是正确的,那是因为这些标记中的任何内容都是(正如您所猜测的)模板,并不代表实际的运行时实例,并且编译器无法保证这些模板将被显示(例如,用户已登录,因此将显示
LoggedInTemplate
),因此不会将这些控件自动公开给.cs

事实上,.cs可以立即看到的唯一东西就是
LoginView
控件。因此,要访问模板中的控件,必须在运行时使用类似以下代码“查找”它们:

if (!User.Identity.IsAuthenticated)
{
    Login memberLogin = (Login)this.MemberValidation.FindControl("MemberLogin");
    Literal informationMessage = (Literal)memberLogin.FindControl("InformationMessage");
    informationMessage.Text = "Hello World";
}


绝对正确。以前有过这个问题——这不是一个好问题,但我使用了与您相同的解决方案来解决它。