0

特定のページがあり、管理者の役割に応じて、多くの追加の検証コントロールを挿入する必要があります。ただし、他のユーザーに対してバリデーターがオンになるリスクを冒したくありません。

私が考えていたのは、何らかの形の「視覚的継承」を使用することですが、どのパスを選択すればよいかわかりません。おそらく、同じクラス(Pageから継承する)から継承する別々の.aspxページがありますか?

補足:これは、MVCではなくWebフォームで実行する必要があります。

追加情報:私が解決しようとしている問題は、ページを複製したり、両方の変更を維持したりすることなく、役割を分離してページに与える影響です。バニラページを表示するクライアントがあり、管理者は同じ情報を表示できますが、検証コントロールが追加されています。ただし、これらの検証コントロールはクライアントに表示されるべきではありません。また、さらにいくつかの情報を見ることができますが、特定のユーザーコントロールのロールベースの表示を使用して処理できます。

誰かがこれについて考えを持っていますか?

4

3 に答える 3

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 に答える
2

マスターページを使いたくないのはなぜですか?マスターページは、あなたがやりたいことを正確に実行します。マスターページは、(話す方法で)相互に「継承」することもできます。

マスターページを使用して、やりたいことを行うことをお勧めします。

ASP.NETマスターページを使用すると、アプリケーションのページに一貫したレイアウトを作成できます。単一のマスターページは、アプリケーションのすべてのページ(またはページのグループ)に必要なルックアンドフィールと標準の動作を定義します。次に、表示するコンテンツを含む個々のコンテンツページを作成できます。ユーザーがコンテンツページを要求すると、マスターページとマージして、マスターページのレイアウトとコンテンツページのコンテンツを組み合わせた出力が生成されます。

于 2009-07-29T12:49:36.307 に答える
0

多くの場合、このような問題は、ページをユーザーコントロール(.ascx)に分割することで解決できます。それは少し厄介になる可能性がありますが、仕事をやり遂げます。

可能ではありますが、ページの継承は困難です。理解しなければならないのは、ある.aspxページが別の.aspxページから継承できないということです。これは、ASP.NETコンパイラがどのように機能するかによるものです。.aspxXMLマークアップは、分離コードクラスから派生したクラスにコンパイルされます。これは実行時にのみ発生するため、コードビハインドがコンパイルされているときにクラスが存在しないため、別の.aspxページを継承させることはできません。

できることは、Pageから継承する別のクラスを作成し、.aspx分離コードクラスにそれを継承させることです。それは可能ですが、このクラスには.aspx XML部分がないことに注意してください。すべてのコントロールを自分でインスタンス化し、それらのプロパティを割り当てる必要があります。ほとんどの場合、これはかなり厄介です。

于 2009-07-29T13:20:28.047 に答える