Das glaube ich nicht, dass Sie die gleiche Aktionsnamen standardmäßig mit dem ein Verb überlasten. Wie der andere Thread, auf den Sie zeigen, können Sie die Methoden & überladen und dann ein Attribut verwenden, um die Aktion zu ändern, die der Methode zugeordnet ist, aber ich denke, das ist nicht das, wonach Sie suchen.
Eine andere Option, die ich zuvor verwendet habe (hängt davon ab, wie komplex/anders Ihre Überladungen sind) ist einfach Nullwerte für die Parameter & effektiv zu verwenden, um Ihre verschiedenen Signaturen zusammenzuführen. Also statt:
public ActionResult DoSomething(int id)...
public ActionResult DoSomething(string name)...
gerade haben:
public ActionResult DoSomething(int? id, string? name)
nicht die schönste Lösung, aber wenn man Überlastung baut nur auf einem anderen dann ist es nicht so schlimm, ein Kompromiss.
Eine letzte Option, die einen Versuch wert sein kann, geben (ich habe es nicht versuche & weiß nicht einmal, wenn es funktioniert, aber es sollte logisch), ist eine Implementierung der ActionMethodSelectorAttribute
zu schreiben, vergleicht die Parameter, die in ControllerContext
an die Methodensignatur übergeben werden & versucht, eine beste Übereinstimmung zu machen (dh versuchen, die Ambiguität ein bisschen strenger als die Standardimplementierung aufzulösen).
Das ist ziemlich viel, was ich tue, aber ich schreibe es als öffentlichen ActionResult DoSomething (int? Id, String-Name) und nur eine Überprüfung für String.IsNullOrEmpthy (Name) in der Methode. – Chris