我必须实现一个像这样调用的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
。
如何重新映射我的参数名称?
答案 0 :(得分:46)
Prefix
就是您所需要的:
ActionResult MyAction( [Bind(Prefix="resName")] String resourceName )
但是,执行http://address/Controller/MyAction?resourceName=name
将无法使用该设置。
答案 1 :(得分:10)
另一种选择是使用ActionParameterAlias库。关于它的好处是给定参数的两个名称都可以工作。
e.g。
using ActionParameterAlias;
//...
[ParameterAlias("resourceName", "resName", Order = 1)]
ActionResult MyAction( String resourceName )
然后调用http://address/Controller/MyAction?resourceName=name
和 http://address/Controller/MyAction?resName=name
之类的控制器都可以正常工作。