2

ユーザータイプとアクセス許可レベルに基づいて変更されるいくつかのASP.NetWebフォームを設計する必要があります。

データベースには7つのユーザータイプが定義されています(ClientTypeテーブル、ID = 0〜7)。

Webフォームのコントロールにマップバックするデータベース内のすべてのフィールドも、表示/追加/変更/削除のアクセス許可を持つユーザータイプによって定義され、データベースの個別のテーブルに保存されます。

すなわち

tbl_FieldAccess

FieldName = Client_Name (Client Name Field in our Client Table)
ClientType = 1
View = 1
Add = 0
Modify = 0
Delete = 0

FieldName = Client_Name ClientType = 7
View = 1
Add = 1
Modify = 1
Delete = 1

実際のWebフォームコントロールを取得してtbl_FieldAccessテーブルのレコードにマップし、それを使用してコントロールを表示/非表示にするかどうかを決定し、読み取り専用にするための最良の方法(パターン、プラクティス、特定の例)は何ですか? 、など?

注:レガシーログインと認証を使用する必要があるため、ASP.NetメンバーシップAPIはここではオプションではありません。

ASP.Net、C#、およびSQLServerを使用します。

ありがとう!

4

1 に答える 1

2

ページのビューモデルを作成することをお勧めします。

class MyPageViewModel
{
    public bool SendButtonVisible { get; set; }
    public bool EditButtonEnabled { get; set; }
    // many other properties ...
    public YourData Data { get; set; }
}

次に、aspxは次のようになります。

<asp:Button Id="btnSend" runat="server" Visible='<%# Model.SendButtonVisible" %>' />

そしてあなたのコードの背後に:

    public class YourPage : Page
    {
         public MyPageViewModel Model 
         {
             get { return (MyPageViewModel )ViewState["Model"]; }
             set { ViewState["Model"] = value;  }
         }

         protected void Page_Load(object sender, EventArgs e)
         {
            if (!Page.IsPostBack)
            {
                // put all business logic in your service layer
                Model = YourServiceClass.GetMyPageViewModel();
                DataBind();
            }
         }
    }
于 2012-07-17T13:45:35.317 に答える