ASP.net中的虚荣配置文件URL

时间:2012-05-31 13:36:58

标签: c# asp.net asp.net-mvc-3 vanity-url

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

其个人资料的默认地址为:

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

当他们指定虚荣网址时,有人可以输入

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异常。我如何确保它调用正确的函数?

1 个答案:

答案 0 :(得分:2)

你几乎没有选择。

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

我会非常小心你的方法(相同的动作,不同的参数),因为存在用户为虚荣URL选择int(与用户id的格式相同)的风险。你会如何解决这种冲突?