如何在路由配置文件中设置默认页面和 URL
本文关键字:默认 URL 设置 路由 配置文件 | 更新日期: 2023-09-27 18:33:12
这是我第一次在MVC中开发,并且已经遇到这个问题一段时间了。
我想做什么
我想使网址看起来像这样:
example.com/SiteName/Project/Index/3
取而代之的是:
example.com/SiteName/Project?projectId=3
而且,我希望用户能够键入example.com/SiteName
并查看example.com/SiteName/Home/Index
,因为它是默认页面。
我有什么
我有一个页面,主页,显示项目列表。通过单击其中一个项目,"项目"页面将显示所选项目的详细信息。
在我的RouteConfig.cs
文件中,我有这个:
routes.MapRoute(
name: "Project",
url: "{controller}/{action}/{proejctId}",
defaults: new { controller = "Project", action = "Index", projectId = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
问题
当我在RouteConfig.cs
文件中首先列出Project
的routes.MapRoute
时,我得到了我想要的 URL ( example.com/SiteName/Project/Index/3
(。
但是,当我尝试example.com/SiteName
时,它会在共享文件夹中显示Error.cshtml
模板。
我发现了一个SO问题,提到顺序很重要。但是,如果我切换顺序,example.com/SiteName
确实成功显示example.com/SiteName/Home/Index
页面,但是当我单击列表中的项目时,URL 将更改为以下内容:example.com/SiteName/Project?projectId=3
如何将默认页面设置为主页/索引,同时仍将URL保留为example.com/SiteName/Project/3
?
将路线更改为
routes.MapRoute(
name: "Project",
url: "Project/{action}/{projectId}",
defaults: new { controller = "Project", action = "Index", projectId = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);