基于权限和权限的动态Web表单

时间:2012-07-17 13:26:20

标签: asp.net .net sql-server permissions webforms

需要设计几个基于用户类型和权限级别更改的ASP.Net Web窗体。

数据库中定义了七种用户类型(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 Membership API不是一个选项。

使用ASP.Net,C#和SQL Server。

谢谢!

1 个答案:

答案 0 :(得分: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();
            }
         }
    }