Non credo che si può sovraccaricare il nome dell'azione stessa con un verbo di default. Come indica l'altro thread a cui fai riferimento, puoi sovraccaricare i metodi & quindi utilizzare un attributo per modificare l'azione associata al metodo, ma suppongo che non sia quello che stai cercando.
Un'altra opzione che ho usato prima (dipende da quanto sono complessi/diversi i sovraccarichi) è semplicemente usare valori nullable per i parametri & unire efficacemente le diverse firme insieme. Così, invece di:
public ActionResult DoSomething(int id)...
public ActionResult DoSomething(string name)...
resta che:
public ActionResult DoSomething(int? id, string? name)
non è la soluzione più bella, ma se uno di sovraccarico si basa proprio su un altro allora il suo non troppo male un compromesso.
Un'ultima opzione che potrebbe valere la pena di fare (non l'ho provata, & non so nemmeno se funzionerà, ma logicamente dovrebbe), è scrivere un'implementazione dello ActionMethodSelectorAttribute
che confronta il i parametri passati nel metodo ControllerContext
alla firma del metodo & cercano di ottenere una corrispondenza ottimale (ad esempio, provare a risolvere l'ambiguità un po 'più rigorosamente dell'implementazione predefinita).
Questo è praticamente quello che faccio, ma lo scrivo come public ActionResult DoSomething (int? Id, nome stringa) e basta fare un controllo per String.IsNullOrEmpthy (nome) nel metodo. – Chris