2013-04-04 9 views
31

devo implementare un'azione MVC che viene richiamato in questo modo:Come si rimappa un parametro di azione MVC con un altro nome di parametro?

http://address/Controller/MyAction?resName=name 

e si chiama da una terza parte che è codificato a passare resName. Quindi il modo ingenuo è quello di avere un'azione simile a questo:

ActionResult MyAction(String resName) 
{ 

ma penso che avere un parametro chiamato resName è cool e mi piacerebbe preferiscono avere il suo nome resourceName. Se ho appena rinominato il parametro Mapping parametri MVC non funziona più e ho sempre resourceName impostato su null quando viene richiamata la mia azione.

Ho provato BindAttribute come questo:

ActionResult MyAction([Bind(Include="resName")] String resourceName) 

ma resourceName è ancora null ogni volta che viene richiamata la mia azione.

Come si rimappa il nome del parametro?

risposta

41

Prefix è quello che vi serve:

ActionResult MyAction([Bind(Prefix="resName")] String resourceName) 

Tuttavia, facendo un http://address/Controller/MyAction?resourceName=name non funzionerà con quella messa a punto.

9

Un'altra opzione è utilizzare la libreria ActionParameterAlias. La cosa bella è che entrambi i nomi di un dato parametro funzioneranno.

ad es.

using ActionParameterAlias; 
//... 

    [ParameterAlias("resourceName", "resName", Order = 1)] 
    ActionResult MyAction(String resourceName) 

chiama poi al controller come http://address/Controller/MyAction?resourceName=nameehttp://address/Controller/MyAction?resName=name saranno entrambi funzionano bene.

Problemi correlati