asp.net - 基于权限的动态Web表单

标签 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。

谢谢!

最佳答案

我建议您为页面创建 View 模型:

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();
            }
         }
    }

关于asp.net - 基于权限的动态Web表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523509/

相关文章:

sql - 如何在将汇总保留在最后一行的同时对嵌套选择的结果进行排序?

mysql - 如何将一列中的所有行求和到两个连接表中?

c# - 为什么我得到 "No connection associated with this command"?

c# - 在.NET中,如何制作不显示在windows窗体上的自定义控件?

c# - AWS Aurora 服务器有时会响应 "Unknown Database: ..."

javascript - 如何将javascript聊天客户端嵌入到C#中

mysql - 我如何将 "migrate"结构从 aspnetdb.mdf 转换为 mysql 数据库

asp.net - 搜索 elmah 错误日志文件(可能是 1000 年)

c# - 这是冗余代码吗?

asp.net - RDLC 发票,其中 tablix、标题、详细信息和总计与页面底部对齐