ASP.NET MVC控制器方法重载详解及替代方案
问题:
ASP.NET MVC控制器能否重载方法?为什么我的重载尝试失败了?我收到的错误信息是:
“控制器类型'MyController'上的'MyMethod'操作的当前请求在以下操作方法之间不明确:”
解答:
虽然错误信息表明不支持方法重载,但可以使用[ActionName]
特性达到类似的效果。
在ASP.NET MVC中,同一个控制器内不允许方法重载。但是,您可以使用[ActionName]
特性为方法指定不同的名称。这允许您为具有相同HTTP方法(例如GET或POST)的操作使用不同的方法签名。
要模拟方法重载,请将[ActionName]
特性添加到要重命名的的方法上。例如:
<code class="language-csharp">[ActionName("MyOverloadedName")] public ActionResult MyMethod(int id) { // 重载方法的代码 }</code>
需要注意的是,使用[ActionName]
并非真正的重载方法。它仅仅改变了路由到该方法的操作名称。因此,对于处理相同HTTP方法的方法,您仍然需要使用不同的操作名称。
更多信息,请参考Phil Haack的文章:https://www.php.cn/link/8ab84c57bf234ea2e3bf8330b47c2db1
以上是ASP.NET MVC控制器方法是否可以超载,如果没有,我该如何达到类似的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!