2

我正在 ASP.net 中创建一个应用程序,其中每个用户都有自己的个人资料,可以与他人共享。

他们个人资料的默认地址是:

www.domain.com/User/Profile/[UserID]

当他们指定虚 URL 时,有人可以输入

www.domain.com/User/Profile/[Vanity]

并被定向到同一页面。配置文件页面仅与一个函数一起使用,该函数在控制器中使用具有以下功能的 UserID:

    public ActionResult Profile(int id)
    {
        ppUser viewerChoice = DB.User_GetUserByPersonID(id);

        return View(viewerChoice);
    }

但是,当我添加另一个带字符串的

    public ActionResult Profile(string vanity)
    {
        ppUser viewerChoice = DB.User_GetUserByVanity(vanity);

        return View(viewerChoice);
    }

这会导致 AmbiguousMatch 异常。我将如何确保它调用正确的函数?

4

1 回答 1

2

你有几个选择。

  • 您只能捕获字符串参数并读取它,如果它是一个数字,则将其转换为 int。
  • 您可以配置2个单独的路由并使用正则表达式来识别参数并相应地处理它
  • 对 int 和 string 参数使用单独的操作。

我会非常小心您的方法(相同的操作,不同的参数),因为用户可能会为虚 URL 选择 int(与用户 ID 相同的格式)。你会如何解决这样的冲突?

于 2012-05-31T13:43:55.550 回答