【问题标题】:Is there a way to use a class as a class factory for user controls?有没有办法将类用作用户控件的类工厂?
【发布时间】:2009-06-23 15:36:27
【问题描述】:

.NET 2.0 中有没有一种方法可以将类用作用户控件的类工厂?换句话说,1 个 super 坐在那里,当我想要一个用户控件时,它会创建它并将其返回给我。它似乎需要我似乎无法引用的 ASP 命名空间。

我有一个带有占位符的母版页。根据用户的身份验证,我想动态加载用户控件。例如,如果他们通过了身份验证,它可能是一个搜索控件,如果他们没有登录,它可能是一个广告。我可以动态加载它们。但我的计划是使用一个类来控制它。现在我必须在后面的母版页代码上加载它们。类中没有要显示的代码,因为它不会让我引用用户控件,所以我没有走多远。

【问题讨论】:

  • 几种方式。与 ASP 或 .NET 2.0 相比,基本面向对象的问题可能更多。为什么不添加一些经过编辑的示例代码,以便我们可以看到你哪里出错了?

标签: asp.net class controls factory


【解决方案1】:

用户控件是页面内容的简单块。它们并不意味着花哨。您可能会发现使用用户控件执行此操作比值得做的麻烦更多。

【讨论】:

    【解决方案2】:

    您可以动态地创建控件(我主要是为 Sharepoint 站点完成的,偶尔也会通过在页面上重载 CreateChildControls 来完成),但是您从中获得的却是一堆页面生命周期问题。

    您可能会发现最好的解决方案是使用单独的页面(使用母版进行布局),加上 url 修剪。

    因此 \search 仅限于 web.config 中经过身份验证的用户。因此,如果他们尝试去搜索,未清洗的群众会被重定向到 \Login(其中包含广告)。

    【讨论】:

      【解决方案3】:

      一些东西,也许有帮助:)...

      1. 我想您可能正在寻找LoginView Class。它将根据身份验证状态甚至角色显示单独的控件或任何 html。抱歉,如果我告诉你一些你已经知道的事情。

      2. 也替换了 LoginView 功能,这似乎是您向我描述的,服务器控件会更合适。特别是Composite Server Control

      3. 动态加载功能可以通过添加 ASP.Net AJAX 来完成。例如,您的复合控件可以基于 ASP.Net AJAX UpdatePanel。您还可以将服务器控件基于ScriptControl 基类。

      4. 即使您可以使用 AJAX 动态加载,我还是建议您使用已经为您完成的内容。即构建一个Web Part Server Control

      【讨论】:

        猜你喜欢
        • 2014-12-04
        • 2021-03-19
        • 2011-10-12
        • 2020-04-07
        • 1970-01-01
        • 1970-01-01
        • 2011-01-28
        • 2014-08-05
        • 2019-07-25
        相关资源
        最近更新 更多