Mit einem Bindestrich (-) in ASP.MVC-Parameter
<% using (Html.BeginForm("SubmitUserName")) { %>
<input type='text' name='user-name' />
<input type='submit' value='Send' />
<% } %>
Was sollte eine Unterschrift der entsprechenden Action-Methode zu akzeptieren user-name
parameter?
public ActionResult SubmitUserName(string user-name) {...}
Signatur der Methode oben nicht funktioniert aus irgendeinem Grund 😉
Ich weiß, es ist ein ActionNameAttribute
zu handhaben situation mit einem Bindestrich im Namen für die Aktion ein. Gibt es so etwas wie ParameterNameAttribute
?
- Tun Sie wirklich brauchen, um zu verwenden, dash?
- ist es erforderlich zu
user-name
? - Es ist gar nicht erforderlich. Es ist nur verwirrend, dass MVC glaube nicht, dass dieses Szenario. Ich es gar nicht verwenden, einfach nur neugierig, wenn Ihr es...oder warum es nicht da ist.
- Es gibt Szenarien, wo man mit einem Drittanbieter-tool, und Sie müssen Unterstützung Striche
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie jeder bemerkt hat, der einfachste fix wäre, nicht dash. Wenn Sie wirklich brauchen, das dash, Sie können erstellen Sie Ihre eigenen ActionFilterAttribute es zu handhaben, aber.
Etwas wie:
Würden Sie dann den filter anwenden, um die entsprechende Action-Methode:
Würden Sie wahrscheinlich wollen zu verbessern die ParameterNameAttribute zu handhaben, groß - /Kleinschreibung, aber das wäre die Grundidee.
OnActionExecuting
verwenden solltenTryGetValue
zu vermeiden, doppelt lookupContainsKey
gefolgt von den indexer.Erstellen Sie eine pseudo-parameter in der ersten Zeile der Methode Aktion:
Ich fand diese Antwort hilfreich, aber ich weiß nicht genau, wie das Beispiel hilft. Es erscheint nur "umbenennen" einen Wert, der binder alle bereit gestellt.
In meinem Fall, ich wurde gebucht von einem externen Dienstleister, die post würde so etwas wie "Körper-Ebene" und ich konnte nicht an den Namen. Also habe ich geändert in diesem Beispiel wie folgt Aussehen:
Diese tatsächlich nimmt der parameter "Körper-Ebene" zum Beispiel und ordnet Sie ein ActionParameter ich auf meinem controller. Etwa so:
Nicht die Beantwortung der eigentlichen Frage auf der Grundlage der Technologie in Frage, aber trotzdem, die Welt bewegt sich vorwärts, in einigen Gebieten; in AspNetCore.Mvc können Sie einfach tun:
Ich würde vorschlagen, etwas wie das zu tun - es sei denn, es ist erforderlich für die Verwendung der
user-name
Attribut (oder du bist nicht die Bindung an ein Modell)