2009-04-03 4 views
0

Ich habe ein ASP.NET MVC-Projekt in C# mit Forms Authentication und Active Directory ist der Mitgliedschaftsanbieter (Benutzer melden sich mit ihrer vorhandenen UID/Pwd). Ich möchte jedoch, dass die Rollen von aspnet_Roles (die Standardtabelle, die von der Anwendung erstellt wird) bereitgestellt werden. In meiner Web.config habe ich: mit Voreinstellung für diesen Knoten.Liste der verfügbaren Rollen von DB als Checkboxen anzeigen, wie NerdDinner mit Ländern

Ich folgte erfolgreich der NerdDinner Beispielanwendung PDF und möchte verwenden, was ich gelernt habe. In meiner App verwende ich das Repository-Muster genau wie NerdDinner. In NerdDinner wird gezeigt, wie eine Helper-Methode zum Auffüllen einer DropDownList verwendet wird. Ich würde gerne dasselbe machen, aber anstatt Länder und DropDown möchte ich Rollen von einem Tisch ziehen und Checkboxen füllen.

In meinem UsersController.cs ich habe:

// 
// ViewModel Classes 
public class UserFormViewModel 
{ 
    // properties 
    public User User { get; private set; } 
    public SelectList Roles { get; private set; } 

    // Constructor 
    public UserFormViewModel(User user) 
    { 
     User = user; 
     Roles = new SelectList(Roles.All,); //this is where I have problems 
    } 
} 

Aus meiner Sicht habe ich (was natürlich nicht funktioniert):

<ul> 
    <% foreach (var role in Roles as IEnumerable<SelectListItem>)) { %> 
    <li><%= Html.CheckBox(role.ToString())%> <%= role.ToString() %></li> 
    <% } %> 
</ul> 

P. S. Ich bin ein Neuling zu .NET, aber ich liebe es! Korrigiere mich, wenn ich falsch liege, aber ich denke, dass dieses Problem mit Sammlungen und Typdefinitionen zu tun hat?

Ich bin auch vertraut mit der Verwendung des ASP.NET-Konfigurationstools zum Hinzufügen von Rollen und Benutzern, aber ich möchte einen benutzerdefinierten User Admin-Abschnitt erstellen.

Antwort

0

So etwas ähnliches?

Kann nicht genau die genaue Syntax der Rollen in der asp.net-Mitgliedschaft Anbieter erinnern, aber es ist etwas in diese Richtung.

+0

Hey Morph Ich glaube, es wäre: <% = Html.CheckBox (role.ToString(), Roles.IsUserInRole (Model.User.UserName, role.ToString()))%> aber wie würde ich die Schleife starten? Ich versuche: <% foreach (var Rolle in Rollen als IEnumerable ) {%>, aber das funktioniert nicht – robnardo

0

Es sieht so aus, als brauche ich nicht die UserFormViewModel-Klasse. Morph hat mir geholfen. Das ist, was ich tue:

<ul>    
    <% 
     string[] allroles = Roles.GetAllRoles(); 
     foreach (string role in allroles) { 
    %> 
    <li> 
     <%= Html.CheckBox(role.ToString(), Roles.IsUserInRole(Model.UserName, role.ToString())) %> 
     <%= role.ToString() %> 
    </li>     
    <% } %> 

</ul> 
+0

das funktioniert auch: foreach (Zeichenfolge Rolle in Roles.GetAllRoles()) {} – robnardo

+0

Ah ich sehe Sie herausgefunden wie man die Schleife macht. Ja Rollen in einer einfachen String-Variablen :). – Morph

Verwandte Themen