这是我第一次在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 }
);
当我在routes.MapRoute
文件中首先列出Project
的{{1}}时,我会得到我想要的网址(RouteConfig.cs
)。
但是,当我尝试example.com/SiteName/Project/Index/3
时,它会在共享文件夹中显示example.com/SiteName
模板。
我发现了一个SO问题,提到订单很重要。
但是,如果我切换订单,Error.cshtml
会成功显示example.com/SiteName
页面,但当我点击列表中的项目时,网址会更改为:example.com/SiteName/Home/Index
如何将默认页面设置为主页/索引,并将网址保持为example.com/SiteName/Project?projectId=3
?
答案 0 :(得分:2)
将路线更改为
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 }
);