38

次のように呼び出される MVC アクションを実装する必要があります。

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

渡すようにハードコーディングされたサードパーティによって呼び出されresNameます。したがって、単純な方法は、次のようなアクションを実行することです。

ActionResult MyAction( String resName )
{

しかし、パラメータを呼び出すのresNameはクールではないと思うので、 name を使用したいと思い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 )

ただし、http://address/Controller/MyAction?resourceName=nameそのセットアップでは動作しません。

于 2013-04-04T12:02:10.470 に答える
10

もう 1 つのオプションは、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 に答える