2012-07-17 3 views
2

Besoin de concevoir plusieurs formulaires Web ASP.Net qui changent en fonction du type d'utilisateur et des niveaux d'autorisation.Formulaire Web dynamique basé sur les droits et autorisations

Il existe sept types d'utilisateur définis dans la base de données (table ClientType, ID = 0-7). Tous les champs de la base de données qui correspondent aux contrôles de nos formulaires Web sont également définis par type d'utilisateur avec les autorisations Afficher/Ajouter/Modifier/Supprimer et stockés dans une table séparée dans la base de données.

-à-dire

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 

Quelle est la meilleure façon (les modèles, des pratiques, des exemples spécifiques) pour prendre maintenant mes contrôles de formulaire Web réels et les associer aux enregistrements dans ma table de tbl_FieldAccess puis l'utiliser pour déterminer si ou ne pas montrer/cacher le contrôle, le rendre en lecture seule, etc.?

Remarque: Je dois utiliser une connexion et une authentification héritées pour que l'API d'adhésion ASP.Net ne soit pas une option ici.

Utilisation de ASP.Net, C# et SQL Server.

Merci!

Répondre

2

Je vous recommande de créer un modèle de vue pour vos pages:

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

Ensuite, votre ASPX ressemble:

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

Et votre code derrière:

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

I J'aime ça. Je vais essayer et voir comment ça se passe et revenir vers vous. Merci. – Hunter

+0

Fonctionne très bien! Je vous remercie! – Hunter

+0

c'est bon, mais comment puis-je savoir quelle page est actuellement chargée et obtenir ce formulaire particulier.we sont en train de charger le nom du formulaire dans la base de données et obtenir le formulaire particulier rights.please me dire la meilleure façon de comparer le formulaire sélectionné est égal à la forme stockée dans la base de données –

Questions connexes