Ben*_*ale 10 c# url asp.net-routing asp.net-mvc-3
如果我导航到以下stackoverflow URL,http://stackoverflow.com/questions/15532493
它会自动附加问题的标题,如下所示:
http://stackoverflow.com/questions/15532493/mvc-custom-route-gives-404
也就是说,我可以在没有问题标题的情况下在我的浏览器中输入URL,并自动附加.
我如何在我的应用程序中实现相同的结果?(注意:我知道问题标题不会影响呈现的页面).
我有一个调用控制器,调用Users
一个动作方法Details
.我定义了以下路线:
routes.MapRoute("UserRoute",
"Users/{*domain}",
new { controller = "User", action = "Details" },
new { action = "^Details$" });
Run Code Online (Sandbox Code Playgroud)
由于这是一个Intranet应用程序,因此用户将根据其Windows帐户进行身份验证.我想将域名和用户名附加到URL.
如果我在视图中生成URL,如下所示:
@Html.ActionLink("Model.UserName", "Details", "User", new { domain = Model.Identity.Replace("\\", "/") })
Run Code Online (Sandbox Code Playgroud)
我得到一个如下所示的网址:
域/用户/ ACME/JSMITH
但是,如果用户Domain/Users/
使用浏览器导航栏导航到URL ,则它与路径匹配,用户将进入用户详细信息页面.ACME/jsmith/
在这种情况下,我想将其附加到URL上.
到目前为止我所做的研究表明我可能必须通过派生RouteBase
和实现GetRouteData
和GetVirtualPath
方法来实现自定义路由对象,但我不知道从哪里开始(msdn documentaiton非常薄).
所以我想知道的是:
其实很简单。由于标题只是出于 SEO 原因而存在,因此您不需要了解实际问题,因此问题控制器(在这种情况下)将根据 id(在 URL 中)加载正确的问题,并使用 301 重定向用户状态码。
您可以使用任何网络检查器看到此行为
归档时间: |
|
查看次数: |
249 次 |
最近记录: |