Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NETMVC-多级URL路由_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# ASP.NETMVC-多级URL路由

C# ASP.NETMVC-多级URL路由,c#,asp.net,asp.net-mvc,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 5,不熟悉ASP MVC 6(以及一般的ASP),正在寻找一些指导 目前,我有一个默认的路由设置: public void Configure(IApplicationBuilder app) { app.UseMvc(routes => routes.MapRoute( "Default", "{controller=Home}/{action=Index}/{id?}")); app.UseFileServer();

不熟悉ASP MVC 6(以及一般的ASP),正在寻找一些指导

目前,我有一个默认的路由设置:

public void Configure(IApplicationBuilder app)
    {
        app.UseMvc(routes => routes.MapRoute(
            "Default", "{controller=Home}/{action=Index}/{id?}"));
        app.UseFileServer();
    }
在我的应用程序中,我希望有几个路线:

/projects/{id?}
-如果id为空/无效或使用控制器项目(id),则返回索引

/projects/{id?}/phase/{id?}
-如果阶段id为空/无效或使用控制器阶段(id),则返回项目(id)

你有什么想法可以让我最好的解决这个问题吗

谢谢,
Joe

我不是路线专家,但这应该可以:

app.UseMVC(routes => {
   routes.MapRoute(
        name: "project",
        url: "project/{id}",
        defaults: new { id = UrlParameter.Optional, controller="Project", action="Index"});
    routes.MapRoute(
        name: "projectphase",
        url: "project/{id}/phase/{pid}",
        defaults: new { id = UrlParameter.Optional, pid=UrlParameter.Optional, controller="Phase", action="Index" });
    });

对于无效/空pid,只需使用将用户发送回另一个路由。

解决方法之一是创建一个路由以接受项目ID和短语ID,然后在任何控制器内执行该条件

在routeConfig.cs中,创建一条新路线:

routes.MapRoute(
  name: "MyCustomRoute",
  url: "{controller}/{action}/{projectID}/{phraseID}",
  defaults: new { controller = "Home", action = "Index", projectID = UrlParameter.Optional, phraseID= UrlParameter.Optional }
);
例如,您有一个名为project的控制器

public ActionResult CheckID(int projectID, int phraseID) {
  ViewBag.projectID= projectID;
  ViewBag.phraseID= phraseID;
  if (...check my projectID is valid...) {
    ... return to your project view ...
  } else {
    ... return to your phrase view ...
  }
}
实际的URL应该是这样的

http://mydomain/Project/CheckID/1/2