Heim >Backend-Entwicklung >C++ >Können ASP.NET -MVC -Controller -Methoden überladen werden, und wenn nicht, wie kann ich ein ähnliches Ergebnis erzielen?
Detaillierte Erklärung und Alternativen zur Überladung von ASP.NET MVC-Controller-Methoden
Frage:
Kann der ASP.NET MVC-Controller Methoden überladen? Warum ist mein Nachladeversuch fehlgeschlagen? Die Fehlermeldung, die ich erhielt, war:
„Die aktuelle Anfrage für die Aktion ‚MyMethod‘ auf dem Controllertyp ‚MyController‘ ist zwischen den folgenden Aktionsmethoden nicht eindeutig:“
Antwort:
Obwohl die Fehlermeldung darauf hinweist, dass das Überladen von Methoden nicht unterstützt wird, können Sie das Attribut [ActionName]
verwenden, um einen ähnlichen Effekt zu erzielen.
In ASP.NET MVC ist das Überladen von Methoden im selben Controller nicht zulässig. Sie können der Methode jedoch mithilfe des Attributs [ActionName]
einen anderen Namen geben. Dadurch können Sie unterschiedliche Methodensignaturen für Vorgänge mit derselben HTTP-Methode (z. B. GET oder POST) verwenden.
Um eine Methodenüberladung zu simulieren, fügen Sie das Attribut [ActionName]
zu der Methode hinzu, die Sie umbenennen möchten. Zum Beispiel:
<code class="language-csharp">[ActionName("MyOverloadedName")] public ActionResult MyMethod(int id) { // 重载方法的代码 }</code>
Es ist zu beachten, dass die Verwendung von [ActionName]
keine echte Überladungsmethode ist. Es ändert nur den Namen der an die Methode weitergeleiteten Aktion. Daher müssen Sie immer noch unterschiedliche Operationsnamen für Methoden verwenden, die dieselbe HTTP-Methode verarbeiten.
Weitere Informationen finden Sie im Artikel von Phil Haack: https://www.php.cn/link/8ab84c57bf234ea2e3bf8330b47c2db1
Das obige ist der detaillierte Inhalt vonKönnen ASP.NET -MVC -Controller -Methoden überladen werden, und wenn nicht, wie kann ich ein ähnliches Ergebnis erzielen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!