Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将MVC操作参数重新映射到另一个参数名称?_C#_.net_Asp.net Mvc 3 - Fatal编程技术网

C# 如何将MVC操作参数重新映射到另一个参数名称?

C# 如何将MVC操作参数重新映射到另一个参数名称?,c#,.net,asp.net-mvc-3,C#,.net,Asp.net Mvc 3,我必须实现一个MVC操作,调用方式如下: http://address/Controller/MyAction?resName=name ActionResult MyAction( String resName ) { ActionResult MyAction( [Bind(Include="resName")] String resourceName ) 它由硬编码为passresName的第三方调用。因此,天真的做法是采取如下行动: http://address/Controlle

我必须实现一个MVC操作,调用方式如下:

http://address/Controller/MyAction?resName=name
ActionResult MyAction( String resName )
{
ActionResult MyAction( [Bind(Include="resName")] String resourceName )
它由硬编码为pass
resName
的第三方调用。因此,天真的做法是采取如下行动:

http://address/Controller/MyAction?resName=name
ActionResult MyAction( String resName )
{
ActionResult MyAction( [Bind(Include="resName")] String resourceName )
但是我认为有一个名为
resName
的参数是不酷的,我更希望它名为
resourceName
。如果我只是重命名参数,MVC参数映射将不再工作,并且在调用我的操作时,我总是将
resourceName
设置为
null

我像这样尝试了
BindAttribute

http://address/Controller/MyAction?resName=name
ActionResult MyAction( String resName )
{
ActionResult MyAction( [Bind(Include="resName")] String resourceName )
但是每次调用我的操作时,
resourceName
仍然是
null


如何重新映射参数名?

前缀是您需要的:

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

但是,执行
http://address/Controller/MyAction?resourceName=name
无法使用该设置。

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

e、 g


然后调用控制器,如
http://address/Controller/MyAction?resourceName=name
http://address/Controller/MyAction?resName=name
两者都可以正常工作。

不幸的是,如果在应用程序中的某个位置使用DateTime类型的属性并注册全局筛选器,ActionParameterAlias将失败。筛选器正在遍历所有属性及其属性等和DateTime。Date的类型为DateTime,这会导致无休止的递归。可能发生在递归使用类的任何层次结构中。使用nuget软件包会在没有说明问题所在的情况下终止应用程序,因此在当前版本(6.0.0)中使用该软件太危险且不稳定。