2

是否可以有 2 个具有相同名称的控制器方法?

4

1 回答 1

2

您指的是控制器方法,这使我感到困惑。是 C# 类方法还是控制器操作?让我两个都回答。

纯 C# 不允许这样做

在 C# 中不可能有两个具有相同签名的方法。这意味着具有相同类型的相同名称和相同数量的参数。

public int Calculate(int a, int b) { ... }
public int Calculate(int first, int second) { ... } // compiler ERROR

但是 Asp.net MVC 控制器操作允许它

如果您谈论的是 Asp.net MVC 控制器操作,那当然是可能的。使用ActionName属性来完成您所需要的:

public ActionResult Common() { ... }

[ActionName("Common")]
public ActionResult CommonAgain() { ... } // C# signature differs

但是其中一个必须有一些其他方法选择器属性,以便动作调用者知道当请求进来时使用哪一个......因为它们是你会有一个 404 运行时错误。可能一个应该是常规请求操作,但另一个应该在 Ajax 请求进入时执行。或类似的。需要进行一些区分。

于 2013-03-21T09:17:39.867 回答