sha*_*oth 35 .net c# asp.net-mvc-3
我必须实现一个像这样调用的MVC动作:
http://address/Controller/MyAction?resName=name
Run Code Online (Sandbox Code Playgroud)
它由硬编码传递的第三方调用resName.所以天真的方式是做这样的动作:
ActionResult MyAction( String resName )
{
Run Code Online (Sandbox Code Playgroud)
但我认为有一个名为resNameuncool 的参数,我更喜欢它的名字resourceName.如果我只是重命名参数MVC参数映射不再有效,我总是resourceName设置null为调用我的操作.
我试过BindAttribute这样的:
ActionResult MyAction( [Bind(Include="resName")] String resourceName )
Run Code Online (Sandbox Code Playgroud)
但每次调用我的动作时resourceName仍然如此null.
如何重新映射我的参数名称?
von*_* v. 49
Prefix 是你需要的:
ActionResult MyAction( [Bind(Prefix="resName")] String resourceName )
Run Code Online (Sandbox Code Playgroud)
但是,执行a http://address/Controller/MyAction?resourceName=name将无法使用该设置.
jon*_*bot 10
另一种选择是使用ActionParameterAlias库.关于它的好处是给定参数的两个名称都可以工作.
例如
using ActionParameterAlias;
//...
[ParameterAlias("resourceName", "resName", Order = 1)]
ActionResult MyAction( String resourceName )
Run Code Online (Sandbox Code Playgroud)
然后调用控制器就好了http://address/Controller/MyAction?resourceName=name , http://address/Controller/MyAction?resName=name两者都可以正常工作.
| 归档时间: |
|
| 查看次数: |
9655 次 |
| 最近记录: |