在一个控制器上,您最多只能有两个具有相同名称的操作方法,而要做到这一点,必须为1
[HttpPost],另一个必须为
[HttpGet]。
由于两种方法都是GET,因此您应该重命名其中一种操作方法或将其移至其他控制器。
尽管您的2个浏览方法是有效的C#重载,但MVC操作方法选择器无法确定要调用的方法。它将尝试将路由与该方法匹配(反之亦然),并且该算法不是强类型的。
您可以使用指向不同操作方法的自定义路由来完成所需的操作:
…在Global.asax中
routes.MapRoute( // this route must be declared first, before the one below it "StartBrowse", "Gallery/Browse/Start/Here", new { controller = "Gallery", action = "StartBrowse", });routes.MapRoute( "ActualBrowse", "Gallery/Browse/{searchterm}", new { controller = "Gallery", action = "Browse", searchterm = UrlParameter.Optional });…以及在控制器中…
public ActionResult Browse(string id){ var summaries = return View(summaries);}public ActionResult StartBrowse(){ var summaries = return View(summaries);}您还可以通过将属性应用于一个属性来区分它,从而在控制器中使名称相同的动作方法保持相同
[ActionName]。使用与上述相同的Global.asax,您的控制器将如下所示:
public ActionResult Browse(string id){ var summaries = return View(summaries);}[ActionName("StartBrowse")]public ActionResult Browse(){ var summaries = return View(summaries);}

![路由:以下操作方法之间当前的操作要求[…]不明确 路由:以下操作方法之间当前的操作要求[…]不明确](http://www.mshxw.com/aiimages/31/568490.png)
