【问题标题】:Vanity profile URL in ASP.netASP.net 中的虚荣配置文件 URL
【发布时间】:2012-05-31 13:36:58
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    你的选择很少。

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

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

    【讨论】:

    • 我将支持自定义路线的想法。这是 ASP.NET MVC 擅长的事情之一。
    • 不允许用户使用整数作为虚 URL?
    • @Pete 我从来没有说过这是不可能的,但需要解决。
    • @LukeP 我知道你来自哪里。我只是为你所说的问题提供了一个可能的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多