如何将MVC动作参数重新映射到另一个参数名称

本文关键字:参数 映射 另一个 新映射 MVC | 更新日期: 2023-09-27 18:07:35

我必须实现一个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每次我的动作被调用。

如何重新映射参数名?

如何将MVC动作参数重新映射到另一个参数名称

Prefix就是你需要的:

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

然而,做一个http://address/Controller/MyAction?resourceName=name将不工作与该设置

另一个选择是使用ActionParameterAlias库。这样做的好处是,给定参数的两个名称都可以工作。

using ActionParameterAlias;
//...
    [ParameterAlias("resourceName", "resName", Order = 1)]
    ActionResult MyAction( String resourceName )

然后调用控制器,如http://address/Controller/MyAction?resourceName=name http://address/Controller/MyAction?resName=name都将工作得很好。