在ASP.NET MVC中路由,在URL中显示用户名

在ASP.NET MVC中路由,在URL中显示用户名

我正在尝试建立一条路线,以便可以在URL中显示用户名,如下所示:

HTTP:// localhost1234 /约翰·

这是我的routeconfig:

 routes.MapRoute(
                name: "users", // Route name
                url: "{username}", // URL with parameters
                defaults: new { controller = "Home", action = "Index", username = "" } // Parameter defaults
            );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

这是我的HomeController:

 public ActionResult Index(string username = "Test")
 {
   return View();
  }

首先,URL不变。当我username = "Test"在route-config中进行设置时,URL不会更改。

其次,我无法导航到其他控制器。如果我将URL更改为http:// localhost123 / Welcome,则不会发生任何事情。它应该将我重定向到新页面。

我在这里做错了什么?

如果更改路线顺序,则可以导航到其他页面,但用户名未显示在URL中。

我已经用谷歌搜索,关于这个问题的所有答案都说我应该使用上述路线。


鸿蒙传说
浏览 540回答 3
3回答

偶然的你

您需要对网站不同部分的url进行分类,以使url模式匹配机制顺利进行。例如,在您的情况下,输入类别“个人资料”或其他任何内容。现在您的请求网址看起来像http:// localhost1234 / profile / john,而路由将是 routes.MapRoute(                 name: "users", // Route name                 url: "Profile/{username}", // URL with parameters                 defaults: new { controller = "Home", action = "Index" } // Parameter defaults             );  routes.MapRoute(                 name: "Default",                 url: "{controller}/{action}/{id}",                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }             );有关更多信息,请参见MVC中的链接路由。

德玛西亚99

如果我可以投票两次,我会的。当我意识到这一点时,我总是会忘记它的束缚和愚蠢。我的脑海立刻跳到我很久以前做过的疯狂骇客,每当我回头看看它时,都在思索。
打开App,查看更多内容
随时随地看视频慕课网APP