C# 如何在RouteConfig文件中设置默认页面和URL

C# 如何在RouteConfig文件中设置默认页面和URL,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,这是我第一次在MVC中开发,并且已经被这个问题困扰了一段时间 我想做什么 我想让URL看起来像这样: example.com/SiteName/Project/Index/3 与此相反: example.com/SiteName/Project?projectId=3 此外,我希望用户能够键入example.com/SiteName并查看example.com/SiteName/Home/Index,因为这是默认页面 我所拥有的 我有一个页面,主页,显示项目列表。单击其中一个项目,项目页面显

这是我第一次在MVC中开发,并且已经被这个问题困扰了一段时间

我想做什么 我想让URL看起来像这样:

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
模板

我发现一个问题提到顺序很重要。 但如果我切换顺序,
example.com/SiteName
会成功显示
example.com/SiteName/Home/Index
页面,但当我单击列表中的项目时,URL会更改为:
example.com/SiteName/projectd=3

如何将默认页面设置为Home/Index,并将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 }
);

谢谢你的建议。我尝试了,但是默认页面仍然重定向到错误页面。什么是
SiteName
?你在使用区域吗?为什么要将其垂直于路由?
SiteName
是应用程序名称。我们在
xxx.com
server.OK下有许多独立的应用程序,需要从路由定义中删除“SiteName/”(答案已更新)