ASP.NET中无母版页的可视化继承

ASP.NET中无母版页的可视化继承,asp.net,visual-inheritance,Asp.net,Visual Inheritance,我有一个特定的页面,根据管理员角色,必须插入许多额外的验证控件。但是,我不想冒为其他用户打开验证器的风险 我想的是使用某种形式的“视觉继承”,但我不知道该选择哪条路。可能有从同一类继承的单独的.aspx页面(从页面继承) 旁注:这必须在网络表单中完成,而不是在mvc中完成 额外信息:我试图解决的问题是角色的分离和对页面的影响,而不必复制页面,也不必维护两者的任何更改。有些客户端可以看到普通页面,管理员可以看到相同的信息,但添加了验证控件。但是,客户不应看到这些验证控件。此外,还可以看到一些更多的

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

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

旁注:这必须在网络表单中完成,而不是在mvc中完成

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


有人对此有想法吗?

为什么不使用母版页?母版页做的正是您想要做的——它们甚至可以相互“继承”(从某种意义上说)

我建议你用它来做你想做的事

ASP.NET母版页允许您 为应用程序创建一致的布局 应用程序中的页面。单人间 母版页定义了外观 和你想要的标准行为 对于所有页面(或一组 在您的应用程序中。你可以 然后创建单独的内容页 包含您要删除的内容的 展示。当用户请求 内容页,它们与 母版页以生成 合并母版页的布局 从内容到内容 页面


为什么不想使用母版页?母版页做的正是您想要做的——它们甚至可以相互“继承”(从某种意义上说)

我建议你用它来做你想做的事

ASP.NET母版页允许您 为应用程序创建一致的布局 应用程序中的页面。单人间 母版页定义了外观 和你想要的标准行为 对于所有页面(或一组 在您的应用程序中。你可以 然后创建单独的内容页 包含您要删除的内容的 展示。当用户请求 内容页,它们与 母版页以生成 合并母版页的布局 从内容到内容 页面


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

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


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

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

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


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

如果您试图解决的问题是基于角色查看控件,并且您正在使用内置的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>

特殊管理内容

如果您试图解决的问题是基于角色查看控件,并且您正在使用内置的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>

特殊管理内容

母版页是ASP.NET中唯一正常工作的可视继承。母版页是ASP.NET中唯一正常工作的可视继承。我们也考虑过这一点,但在这种情况下,问题转移到内容页的位置。或者,您的意思是文本框将位于母版页上,如果需要,验证程序将放置在内容页上?我们的页面上有100多个控件,那么grids/ListView呢?我认为这是一个无效的解决方案。我不明白-你想解决什么问题?你会如何更好地解决它?我在我的问题中添加了一些额外的信息,希望能进一步澄清。我们也在考虑这个问题,但在这种情况下,问题转移到了内容页的位置。或者你的意思是文本框会出现在母版页上