我想知道为什么ASP.NET MVC 3会给我一个异常
控制器类型'EditController'上的当前操作请求'PreviewProfile'在以下操作方法之间不明确: System.Web.Mvc.ActionResult类型为OSKus.Controllers.EditController的PreviewProfile() 类型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 :(得分: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 :(得分:1)
因为它无法在定义的路线中区分它们。
但为什么不将签名更改为:
public ActionResult PreviewProfile(int? personId)
{
ìf(personId.HasValue)
{
// id supplied, do stuff and return view
}
// No id supplied
// return default view
}