我看到的所有重载示例通常只有两个具有不同参数的同名方法,一个使用GET动词而另一个使用POST.是否可以在同一个方法上执行两个或更多重载,所有都使用相同的动词?
这是我所指的一个例子:你能在ASP.NET MVC中重载控制器方法吗?
我不认为你可以默认使用一个动词重载相同的动作名称.正如您指出的其他线程所说,您可以重载方法然后使用属性来更改映射到方法的操作,但我猜这不是您正在寻找的.
我之前使用的另一个选项(取决于重载的复杂程度和不同程度)是简单地为参数使用可空值并有效地将不同的签名合并在一起.所以代替:
public ActionResult DoSomething(int id)...
public ActionResult DoSomething(string name)...
Run Code Online (Sandbox Code Playgroud)
只有:
public ActionResult DoSomething(int? id, string? name)
Run Code Online (Sandbox Code Playgroud)
不是最好的解决方案,但如果一个重载只是建立在另一个上,那么它的妥协就不算太糟糕了.
一个最后的选择,可能值得一试(我还没有尝试过,甚至不知道它是否可行,但逻辑上应该),是编写一个实现ActionMethodSelectorAttribute,比较传递ControllerContext给的参数方法签名并尝试进行最佳匹配(即尝试比默认实现更严格地解决歧义).
| 归档时间: |
|
| 查看次数: |
7473 次 |
| 最近记录: |