Was bringt es, einen Alias für eine Aktionsmethode mithilfe des Attributs "ActionName" festzulegen? Ich sehe wirklich keinen großen Vorteil darin, dem Benutzer die Möglichkeit zu geben, eine Aktionsmethode mit einem anderen Namen aufzurufen. Nach Angabe des Alias kann der Benutzer die Aktionsmethode nur über den Alias aufrufen. Wenn dies jedoch erforderlich ist, warum ändert der Benutzer dann nicht den Namen der Aktionsmethode, anstatt einen Alias dafür anzugeben?
Ich würde mich sehr freuen, wenn mir jemand ein Beispiel für die Verwendung von "ActionName" in einem Szenario geben kann, in dem es große Vorteile bietet oder am besten zu verwenden ist.
asp.net-mvc
asp.net-mvc-3
Hasan Fahim
quelle
quelle
Antworten:
Sie können Ihre Aktion mit einer Nummer beginnen oder ein beliebiges Zeichen, das .net nicht zulässt, in eine Kennung aufnehmen. - Der häufigste Grund ist, dass Sie zwei Aktionen mit derselben Signatur ausführen können (siehe GET / POST-Löschaktionen eines Gerüstcontrollers).
Beispiel: Sie können Bindestriche in Ihrem URL-Aktionsnamen
http://example.com/products/create-product
vshttp://example.com/products/createproduct
oder zulassenhttp://example.com/products/create_product
.quelle
Controller
, z. B. Ansicht oder Datei.Action
View()
haben Sie Probleme, da alle Verweise aufView()
in Ihrem aktuellen ControllerAction
eher auf diese als auf die zugrunde liegende Basismethode aufgelöst werden. Um dies zu umgehen, würden Sie dasActionName
Attribut verwenden, um dieView
Aktion zuzulassen, aber intern würden Sie esPublicView
oder ähnliches nennen.return View("CreateProduct")
oder .NET wird nörgeln , wenn Sie keine Ansicht wiecreate-product.aspx
oder findencreate-product.cshtml
- Zumindest funktioniert mein Code so.Es ist auch nützlich, wenn Sie zwei Aktionen mit derselben Signatur haben, die dieselbe URL haben sollten.
Ein einfaches Beispiel:
quelle
Ich benutze es, wenn der Benutzer einen Bericht herunterlädt, damit er seine CSV-Datei einfach direkt in Excel öffnen kann.
quelle
Versuchen Sie diesen Code:
quelle
Diese Klasse stellt ein Attribut dar, das für den Namen einer Aktion verwendet wird. Außerdem können Entwickler einen anderen Aktionsnamen als den Methodennamen verwenden.
quelle
Dies ist auch hilfreich, wenn Sie eine Methodenüberladung implementieren müssen.
Hier akzeptiert ein ActorView keine Parameter und der andere int. Die erste Methode zum Anzeigen der Schauspielerliste und die andere Methode zum Anzeigen derselben Schauspielerliste nach dem Löschen eines Elements mit der ID 'id'. Sie können den Aktionsnamen als 'ActorViewOverload' verwenden, wenn Sie eine Methodenüberladung benötigen.
quelle