0

我有一个特定的页面,根据管理员角色,必须插入许多额外的验证控件。但是,我不想冒险为其他用户打开验证器。

我在想的是使用某种形式的“视觉继承”,但我不知道选择哪条路径。也许有从同一个类(从 Page 继承)继承的单独的 .aspx 页面?

旁注:这必须在webforms 中完成,而不是 mvc

额外信息:我试图解决的问题是角色分离和对页面的影响,而不必复制页面并且必须维护两者的任何更改。有些客户可以看到原版页面,管理员可以看到相同的信息,但添加了验证控件。但是,客户端不应看到这些验证控件。还可以看到更多信息,但可以通过使用基于角色的查看某些用户控件来处理这些信息。

有人对此有任何想法吗?

4

3 回答 3

2

为什么不想使用母版页?母版页完全符合您的要求——它们甚至可以相互“继承”(以某种方式)。

我建议您使用母版页来做您想做的事。

ASP.NET 母版页允许您为应用程序中的页面创建一致的布局。单个母版页定义了您希望应用程序中所有页面(或一组页面)的外观和标准行为。然后,您可以创建包含您要显示的内容的单个内容页面。当用户请求内容页时,他们会与母版页合并以生成将母版页的布局与来自内容页的内容相结合的输出。

于 2009-07-29T12:49:36.307 回答
2

如果您要解决的问题是基于角色的控件查看,并且您正在使用内置的 asp.net 成员资格/角色提供程序,则可以使用 LoginView 控件来管理管理内容的可见性:

<asp:LoginView runat="server" ID="LoginView">
    <RoleGroups>
        <asp:RoleGroup Roles="Admin">
            <ContentTemplate>
                Special Admin content
                <asp:RequiredFieldValidator></asp:RequiredFieldValidator>

            </ContentTemplate>
        </asp:RoleGroup>
    </RoleGroups>
</asp:LoginView>
于 2009-07-29T13:45:16.400 回答
0

通常可以通过将页面拆分为用户控件 (.ascx) 来解决此类问题。它可能会变得有点混乱,但可以完成工作。

页面的继承是困难的,尽管可能。您必须意识到,一个 .aspx 页面不能从另一个 .aspx 页面继承。这是因为 ASP.NET 编译器的工作方式:您的 .aspx XML 标记被编译成一个派生自代码隐藏类的类。由于这只发生在运行时,您不能从它继承另一个 .aspx 页面,因为在编译代码隐藏时该类根本不存在。

您可以做的是创建另一个继承自 Page 的类,并使您的 .aspx 代码隐藏类继承自该类。这是可能的,但请注意,此类将没有 .aspx XML 部分 - 您必须自己实例化所有控件,并分配它们的属性。在大多数情况下,这将非常混乱。

于 2009-07-29T13:20:28.047 回答