模棱两可的请求mvc 3

时间:2013-10-14 20:10:27

标签: c# asp.net-mvc

我想知道为什么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));
}

2 个答案:

答案 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
}