38

我必须实现一个像这样调用的 MVC 操作:

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

它被硬编码为 pass 的第三方调用resName。所以天真的方法是有这样的动作:

ActionResult MyAction( String resName )
{

但我认为有一个名为的参数resName是不酷的,我更喜欢它的名字resourceName。如果我只是重命名参数 MVC 参数映射不再起作用,并且我总是resourceName设置null为何时调用我的操作。

我试过BindAttribute这样:

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

resourceName仍然是null每次调用我的操作时。

如何重新映射我的参数名称?

4

2 回答 2

52

Prefix是你需要的:

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

但是,执行 ahttp://address/Controller/MyAction?resourceName=name不适用于该设置。

于 2013-04-04T12:02:10.470 回答
10

另一种选择是使用ActionParameterAlias库。它的好处是给定参数的两个名称都可以使用。

例如

using ActionParameterAlias;
//...

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

然后像调用控制器一样调用http://address/Controller/MyAction?resourceName=name 并且 http://address/Controller/MyAction?resName=name都可以正常工作。

于 2016-05-10T14:32:43.270 回答