Überladen von Controller-Aktionen

9

Ich war vor ein paar Minuten etwas überrascht, als ich versuchte, eine Action in einem meiner Controller zu überlasten

Ich hatte

%Vor%

Ich habe

hinzugefügt %Vor%

.... und plötzlich funktionierte keiner mehr

Ich habe das Problem behoben, indem ich "id" als Nullwert gesetzt habe und die anderen beiden Methoden losgeworden bin

%Vor%

und es hat funktioniert, aber mein Code wurde nur ein bisschen hässlich!

Irgendwelche Kommentare oder Vorschläge? Muss ich mit diesem Makel auf meinen Controllern leben?

Danke

Dave

    
DaveDev 12.03.2010, 15:34
quelle

3 Antworten

4

Sie können Aktionen nicht auf diese Weise überlasten, wie Sie herausgefunden haben.

Die einzige Möglichkeit, mehrere Aktionen mit demselben Namen auszuführen, besteht darin, dass sie auf verschiedene Verben reagieren.

Ich würde argumentieren, dass eine einzige Methode, die beide Situationen handhabt, eine sauberere Lösung ist und es Ihnen ermöglicht, Ihre Logik an einer Stelle zu kapseln und nicht darauf angewiesen zu sein, mehrere Methoden mit demselben Namen zu haben, die für verschiedene Zwecke verwendet werden. - Natürlich ist das subjektiv und nur meine Meinung.

Wenn Sie wirklich getrennte Methoden haben wollten, könnten Sie sie anders benennen, damit sie ihre unterschiedlichen Zwecke deutlich angeben. z.B.:

%Vor%     
Matt Lacey 12.03.2010, 15:39
quelle
1

Meiner Meinung nach macht es wirklich Sinn, was du Dave sagst. Wenn ich zum Beispiel eine Auswahl habe, die die Option hat, alles auszuwählen, oder einen einzelnen Datensatz, möchte ich keine anderen Methoden dafür verwenden, sondern eine Methode mit einer Überladung, wie die, die Dave im Beispiel zeigt.

// MrW

    
MrW 12.03.2010 16:35
quelle
0

Ich sehe keine richtigen Antworten hier, also möchte ich eine richtige Antwort posten.

Ja, Sie können Aktionsergebnisse in MVC mit dem Attribut ActionName überladen.

%Vor%     
Shakeer Hussain 27.02.2018 05:39
quelle