【问题标题】:VWD2010 *.aspx.design.cs file not auto generating correctlyVWD2010 *.aspx.design.cs 文件无法正确自动生成
【发布时间】:2012-07-03 06:58:36
【问题描述】:

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

Fixing "name does not exist in the current context" errors in Web Developer Express

Label doesnt exist in the current context

http://forums.asp.net/t/1006588.aspx/1?The+name+xxx+Does+Not+Exist+in+the+Current+Context

...等等等等。

然而,这些问题都没有帮助我解决我的问题,我仍然在用头撞墙。

然后我发现我的标签及其控件会被我的 *.apsx.cs 文件发现,只要我不将它们放在任何非 asp:-tag 中!

我正在尝试使用自定义模板制作自定义登录控件,为此我需要 -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(以及我拥有的所有其他 LiteralControls - 这只是一个小例子)没有自动注册到 *.aspx.design.cs 文件中,因此在我的 *.aspx.cs 文件中无法访问它,但是如果我删除标签和标签,我的 LiteralControl 会弹出。

但是,我需要这两个标签才能使代码按我的意愿运行,所以我的问题仍未解决:我能做什么?是bug吗?

提前致谢, 布林克10

【问题讨论】:

    标签: c# visual-studio-2010 umbraco login-control loginview


    【解决方案1】:

    如果我正确理解您的问题,则 .cs 不能直接访问 Literal 控件,只要它放在 AnonymousTemplateLayoutTemplate 标记内即可。

    如果那是正确的,那是因为这些标签中的任何东西都是(正如你已经猜到的那样)模板并且不代表实际的运行时实例,并且编译器不能保证这些模板会被显示(例如,用户已登录,所以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";
    }
    

    【讨论】:

    • 绝对准确。以前遇到过这个问题 - 这不是一个很好的问题,但我使用了与您相同的解决方案来解决它。
    猜你喜欢
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2017-03-17
    相关资源
    最近更新 更多