2008-11-05 5 views
7

In ASP.NET MVC müssen wir das Suffix "Controller" für alle Controller verwenden. Das scheint unnötig restriktiv - gibt es dafür einen technischen Grund?Warum sind die Controller auf ASP.NET MVC namensbasiert?

Ich bin meistens nur neugierig, kann aber Situationen sehen, in denen flexiblere Benennungsregeln die Code-Organisation verbessern könnten. Konnte die Suche nach möglichen Controller-Klassen nicht einfach mit Reflection durchgeführt werden, um nach Controller abgeleiteten Klassen zu suchen? Oder verlangen, dass Controller Klassen mit einem ControllerAttribute markiert werden?

+0

@ shog9: Danke für die Verbesserung der Lese- und Schreibfähigkeit. –

+0

@Augusto: kein Problem. – Shog9

Antwort

14

Die MVC-Community wird stark von Ruby on Rails beeinflusst, die Werte "convention over configuration" angibt. Indem Sie die Dinge einheitlich benennen, kann die Anwendung mit einer Null-Konfiguration ausgeführt werden.

+0

Sie haben mich dazu geschlagen! Hier ist ein Link: http://en.wikipedia.org/wiki/Convention_over_configuration –

+0

Yeah; Vielen Dank. Ich habe das auch gepackt. –

3

Einer der Vorteile dieser Konvention ist, dass ein URL-Segment, ein Controller und eine Modellklasse gemeinsam den gleichen Namen haben.

URL:/product/ Controller: Produkt: Controller Modell: Produkt

Dies würde einen Namenskonflikt verursachen. Also haben wir eine Konvention getroffen, um Controller-Namen mit "Controller" zu versehen, um diesen Konflikt zu vermeiden. Sie können dieses Verhalten jedoch über unsere Erweiterbarkeits-APIs überschreiben.

+0

Eigentlich Phil ... Bei REST sollten diese URL-Segmente Collections benennen, was bedeutet, dass Controller normalerweise plural sind wie in 'ProductsController' (/ products/1), während Model-Entity als 'Product' singular ist, da die Collection Views das Model' IEnumerable verwendet '. Also würde es sowieso keine Zusammenstöße geben. Aber Konvention ist gut, weil sie auch an anderen Orten benutzt wird (ohne sich zu beschweren) wie in Attributen, Sammlungen, Wörterbüchern, Listen usw. Diese Typen verwenden auch konventionell Suffixe. Aus Gründen der Entwicklungsfreundlichkeit natürlich. –