2013-10-14 45 views
-1

我不知道爲什麼ASP.NET MVC 3扔我一個異常明確的請求MVC 3

採取行動的當前請求「PreviewProfile」上的控制器類型「EditController」是下面的操作方法之間曖昧: 的System.Web .Mvc.ActionResult PreviewProfile()上類型OSKus.Controllers.EditController型OSKus.Controllers.EditController System.Web.Mvc.ActionResult PreviewProfile(Int32)已

[HttpGet] 
public ActionResult PreviewProfile() 
{ 
    return View("PreviewProfile", user.GetPerson(User.Identity.Name)); 
} 
[HttpGet] 
public ActionResult PreviewProfile(int personId) 
{ 
    if (personId == -1) 
     return View("PreviewProfile", user.GetPerson(User.Identity.Name)); 
    return View("PreviewProfile", user.GetPerson(personId)); 
} 
+0

這似乎是這個問題重複: [過MVC控制器方法] [1] [1] :http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc –

回答

2

你不能有兩個[HTTPGET]行動即使使用不同的簽名也具有相同的名稱。

[HttpGet] 
public ActionResult PreviewProfile(int? personId) 
{ 
    if (personId.HasValue) 
     return View("PreviewProfile", user.GetPerson(personId)); 

    return View("PreviewProfile", user.GetPerson(User.Identity.Name)); 

} 
1

因爲它不能在定義的路由中區分它們。

但是,爲什麼不改簽名:

public ActionResult PreviewProfile(int? personId) 
{ 
    ìf(personId.HasValue) 
    { 
     // id supplied, do stuff and return view 
    } 

    // No id supplied 
    // return default view 
}