2009-08-19 9 views
0

Ich bin irgendwie verwirrt, wenn ich einen neuen Controller machen sollte, es scheint wie jedes Mal, wenn ich einen Knopf mache, der irgendwo geht, würde ich einen neuen Controller machen müssen, um die richtigen Pfadnamen zu bekommen.Wie Asp.net Mvc-Controller zu nennen?

Zum Beispiel in diesem Szenario habe ich einen SignIn-Controller.

würde dieser Controller

1. Login view 
2. RestPassword view 
3. CreateAccount view 

So haben, wenn sie sie zu einem anderen Controller gehen, klicken Sie bitte (lässt es Account nennen) so wird dies das Konto alle darin Blick und Sachen haben.

Nun, wie wäre es mit der Ansicht RestPassword? Wenn es das Benutzerpasswort ruht, möchte ich, dass es auf eine Seite geht, die zeigt, dass es ein Erfolg war (die meisten Websites scheinen dies zu tun, zum Beispiel asp.net-Website, wenn Sie eine E-Mail-Adresse eingeben, wird es auf eine andere Seite gehen und erzählen Sie, dass das neue Passwort gesendet wurde).

Also, was sollte es eine andere Ansicht sein? ein Controller?

Wenn es eine Ansicht, dann ist die Wegfindung wie

http://www.site.com/signIn/EmailForgottenPassword 

welche Art von seltsam aussieht mir aussehen würde.

Wenn ich einen neuen Controller dann könnte ich

http://www.site.com/EmailForgottenPassword 

haben, was mir viel besser aussieht, aber dieser Controller würde es eine nur einen Blick.

Ein anderes Beispiel wäre auf dieser SigIn-Seite ihre ist eine Schaltfläche Konto erstellen. Wenn Sie jetzt darauf klicken, wird eine andere Seite mit einer Liste verschiedener Konten angezeigt.

Soll das auch ein neuer Controller sein? Wenn die Konten auf dieser neuen Seite aufgeführt sind, werden sie alle mit einem Registrierungs-Controller mit vielen Ansichten verknüpft.

so wäre es wie SignController -> RegistrationController -> RegistrationController.

sein, dies wahrscheinlich ein paar nette Links bekommen würde.

So wie ich sagte, es scheint, dass Sie schöne Links bekommen, die Sinn machen, müssen Sie ständig neue Controller nach Controller machen.

Also muss ich etwas verpassen.

+0

Sie können eine Route hinzufügen, die Route/Registrierung/EmailForgottenPassword zu einfach nur/EmailForgottenPassword, wenn Sie Ihre URLs sauber halten müssen – mxmissile

Antwort

2

In Ihrem speziellen Fall würde Ihnen ein Controller genügen. Ich würde es den AccountController nennen und fügen Sie die folgenden Aktionen hinzu.

  • Anmeldung
  • Logout
  • erstellen
  • CreateConfirmation
  • Resetpassword
  • ResetPasswordConfirmation

dann für deine Bestätigung Bildschirme haben möchten Sie die die Post Redirect Get (PRG) pattern verwenden können.

wie die Benennung. Im Allgemeinen möchten Sie Nomen für einen Controller und Verben für Aktionen auf diesen Controllern verwenden. Auf diese Weise erhalten Sie lesbare URLs, die sinnvoll sind. Und für das Substantiv können Sie den logischen/geschäftlichen Begriff (besser als der technische Begriff) auswählen, mit dem der Controller befasst ist. Also Konten, Kunden, Produkte, Blogpost etc ...

4

Die Wahrheit ist, dass Sie nie wirklich brauchen mehr als einen Controller. Separate Controller sind nur eine Möglichkeit, Ihre Bedenken zu trennen. Mit anderen Worten, OO Design-Paradigmen zwingen uns, unseren Code logisch in Module zu teilen, aber Sie haben nicht zu - alles kann in einem Controller sein.

Was Sie brauchen ist eine separate Controller-Aktion für jede andere Art von Anfrage Sie bearbeiten möchten. Das heißt, Sie benötigen eine Controller-Methode, die der Routing-Tabelle ausgesetzt ist, die aufgerufen werden kann, indem Sie eine URL eingeben und/oder einige GET- oder POST-Daten bereitstellen. Diese Methode entscheidet dann, was der Benutzer (die Ansicht) anzeigen soll.

Sie können aber auch haben jede URL Punkt jede Controller oder Controller Aktion durch Modifizieren der Routing-Tabelle in Globals.asax wollen wollen.

Sie wahrscheinlich mehr spezifische Fragen über meine Antwort haben - bitte nach ihnen und ich werde sie in bearbeiten

0

Wenn Sie SOLID Prinzipien folgen, dann sollten Sie sie sehr spezifisch nennen.. Wenn Sie ASP.NET MVC 2 verwenden, würde ich große Widgets in "Bereiche" setzen und dann den Controllern gute Namen geben. Mach deine URLs glücklich!