2009-03-25 5 views
1

Ich erstelle eine neue ASP.NET MVC-Anwendung. Bisher habe ich den Account-Controller für Aktionen verwendet, die sich auf das Konto eines Benutzers beziehen - Anmelden/Abmelden, Aktivierung (wie Registrieren, aber ich verwende Register für andere Aktionen auf der Seite, also habe ich es umbenannt), Kontaktinformationen hinzufügen/aktualisieren . Bis jetzt habe ich mich jedoch auf die Benutzeransichten konzentriert.ASP.NET MVC: Verwenden Sie ein vorhandenes Konto oder erstellen Sie einen neuen Benutzer-Controller?

Ich bin an dem Punkt, wo ich die Erstellung der verschiedenen Ansichten beginnen werde, dass Benutzer ohne Administratorrechte sehen. Diese sind im Vergleich zur administrativen Schnittstelle eher begrenzt. Meine Absicht ist es, eine neue Reihe von Ansichten und den zugehörigen Controller in der Benutzer- "Familie" zu erstellen, anstatt die Account-Ansichten/Controller zu verwenden. Ist das eine gute Idee oder sollte ich beim Account-Controller bleiben? Mein Gefühl ist, dass dies für normale Benutzer ein separater Controller sein sollte, da Account sowohl für normale als auch für administrative Benutzer gelten würde.

EDIT: Nach den ersten paar Antworten zu lesen, meine Überarbeitete Frage ist:

Haben Sie das Konto Controller prüfen für Verwaltungsaktionen auf dem Konto des Benutzers oder für alle Aktionen auf das Konto des Benutzers in Bezug auf sein? Würdest du zwischen Mitgliedschaft/rollenbezogenen Sichten/Daten und anwendungsbezogenen Sichten/Daten bis zur Erstellung eines neuen Controllers unterscheiden?

Verwandte, ist aber nicht direkt meine Frage beantworten: ASP.NET MVC Account Controller usage guidelines?

+0

tvanfosson * fragt * eine MVC Frage ?! Beeindruckend. Wenn ich du wäre, würde ich einfach auf tvanfosson antworten, da er normalerweise zuerst MVC-Fragen beantwortet;) –

Antwort

1

Ich glaube nicht, dass es eine richtige oder falsche Antwort hier, also werde ich Ihnen meine Meinung geben.

Technisch entweder Lösung (das Konto Controller Erweiterung oder einen neuen Controller zu schaffen) wird gut funktionieren.

Also ich denke, das ist mehr eine Frage, wie die Benutzer die Funktionalität wahrnehmen. Ich denke, es ist eine gute Idee, der Konvention zu folgen, dass der URI den Controller diktiert (oder umgekehrt, wenn Sie bevorzugen).

Wenn zum Beispiel, werden Sie die „administrativen“ Aktionen auf einem separaten Weg haben, sehen, das sollte dann ein separater Controller. Dies können Sie beispielsweise tun, wenn Sie ein IIS-Modul zur Authentifizierung verwenden oder wenn es Ihre Protokollanalyse vereinfacht.

Auf der anderen Seite könnte es der Fall sein, dass die Benutzer-Account-Funktionen wahrnehmen und Verwaltungsfunktionen als Teil der gleichen Familie von Aktionen, mit der Ausnahme, dass einige Benutzer zusätzliche Funktionen haben. Wenn dies der Fall ist, deutet dies darauf hin, dass sich der URI auf demselben Pfad befinden sollte und somit Teil desselben Controllers sein sollte.

zusammenfassend, ich denke, das ist eine Frage, die Sie Ihren Benutzer Vertreter auf dieser Seite statt Leute fragen sollten. :)

Update: In Bezug auf Ihre aktualisierte Frage würde ich sagen, dass es ziemlich natürlich ist, eine Aktion zum Ändern eines Benutzerpassworts auf dem Account-Controller zu setzen, und diese Aktion könnte vom Benutzer selbst aufgerufen werden, nicht nur ein Administrator. Ich würde also nicht davon ausgehen, dass der Account-Controller ausschließlich für administrative Aufgaben zuständig ist. Auf der anderen Seite liegt Ihr Beispiel für die Fundraising-Leistung weit außerhalb des Geltungsbereichs von mit der Mitgliedschaft verbundenen Dingen, so dass es nicht klar ist, dass es auch auf Konto gehört. Ich lehne mich immer noch an ", fragen Sie Ihren Benutzervertreter."

+0

Ich denke, was ich suche ist, ob Leute den Account-Controller für administrative Aktionen oder für alle damit verbundenen Aktionen halten ein Konto. In meinem Szenario möchte ich der Person ihren aktuellen Fundraising-Status für das letzte Ereignis zeigen, für das sie sich als Indexansicht registriert haben. – tvanfosson

0

In ASP.NET MVC erstellen Sie normalerweise Steuerelemente basierend auf Datentypen anstelle von Zugriffstypen. Zum Beispiel:

Statt 2 /Controllers/UsersControl.cs und/Controller/Admin/UsersControls.cs es ist einfacher, einen gemeinsamen Controller für Admins und reguläre Benutzer zu verwenden - /Controllers/UsersController.cs (indem Sie verschiedene [Authorize] -Attribute und -Ansichten festlegen).

Ich würde bestehende AccountController.cs für die Einkapselung von kontobezogenen Funktionen beibehalten. Und fügen Sie einfach neue UsersController.cs für den Rest hinzu Benutzer bezogene Funktionalität (die Methoden wie OnlineUsers etc. haben könnte)

Verwandte Themen