2013-04-04 11 views
31

muszę wdrożyć działania MVC, który jest wykonywany tak:Jak zmapować parametr czynności MVC na inną nazwę parametru?

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

i nazywa się to przez osobę trzecią, która jest sztywno przekazać resName. Tak naiwny sposób ma mieć działanie takiego:

ActionResult MyAction(String resName) 
{ 

ale myślę, że ma parametr o nazwie resName jest nudna i wolałbym mieć go nazwać resourceName. Jeśli po prostu zmieniam nazwę parametru, mapowanie parametrów MVC nie działa i zawsze mam resourceName ustawiony na null po wywołaniu mojej akcji.

Próbowałem BindAttribute takiego:

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

ale resourceName wciąż null za każdym razem moje działanie jest wywoływany.

Jak zmapować nazwę mojego parametru?

Odpowiedz

41

Prefix jest to, czego potrzebujesz:

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

jednak robi http://address/Controller/MyAction?resourceName=name nie będzie działać z tym setup.

9

Inną opcją jest użycie biblioteki ActionParameterAlias. Zaletą jest to, że obie nazwy dla danego parametru będą działać.

np.

using ActionParameterAlias; 
//... 

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

Następnie wzywa do sterownika jak http://address/Controller/MyAction?resourceName=nameihttp://address/Controller/MyAction?resName=name będzie zarówno praca dobrze.

Powiązane problemy