2013-04-04 65 views
31

我要實現的是調用像這樣的MVC動作:如何將MVC操作參數重新映射到另一個參數名稱?

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

而且它通過硬編碼通過resName第三方調用。所以,用簡單的方式就是有一個這樣的動作:

ActionResult MyAction(String resName) 
{ 

,但我認爲有一個叫resName參數是酷,我寧願把它命名resourceName。如果我只是重命名參數MVC參數映射不再有效,並且當我的動作被調用時,我始終將resourceName設置爲null

我試圖BindAttribute這樣的:

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

resourceName仍然是每一個被調用我的動作時間null

如何重新映射我的參數名稱?

回答

41

Prefix是你所需要的:

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

然而,做一個http://address/Controller/MyAction?resourceName=name將無法​​與設置工作。

9

另一種選擇是使用ActionParameterAlias庫。關於它的好處是,給定參數的兩個名稱都可以工作。

例如

using ActionParameterAlias; 
//... 

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

然後調用到控制器像http://address/Controller/MyAction?resourceName=namehttp://address/Controller/MyAction?resName=name將兩者的工作就好了。

相關問題