-1

我想知道为什么 ASP.NET MVC 3 给我一个异常

当前对控制器类型“EditController”的操作“PreviewProfile”的请求在以下操作方法之间不明确: OSKus.Controllers.EditController System.Web.Mvc.ActionResult PreviewProfile(Int32) 类型上的 System.Web.Mvc.ActionResult PreviewProfile()在 OSKus.Controllers.EditController 类型上

[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));
}
4

2 回答 2

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));

}
于 2013-10-14T20:16:45.507 回答
1

因为它无法在定义的路由中区分它们。

但是为什么不将签名更改为:

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

    // No id supplied
    // return default view
}
于 2013-10-14T20:16:46.840 回答