.Net Core MVC 中有类似 RouteConfig.cs 的东西吗?
Is there something like RouteConfig.cs in .Net Core MVC?
我正在努力学习 Adam Freeman 的书 "ASP .NET MVC"。在这本书中有一章作者建议将路由放入特殊配置文件App_Start/RouteConfig.cs
。它看起来不错,但我正在尝试在 .Net Core 的帮助下实现它。我没有找到路线的特殊位置,所以我将路线放入 Startup.cs
。但它看起来非常丑陋。也许有人知道这种情况的优雅解决方案?
这是我的代码 Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// services are here ..
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
//app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
app.UseHttpsRedirection();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
// /
routes.MapRoute(null, "", new
{
controller = "Products",
action = "List",
category = "", page = 1
});
// Page2
routes.MapRoute(null,
"Page{page}",
new
{
controller = "Products",
action = "List",
category = ""
},
new { page = @"\d+" }
);
// Category
routes.MapRoute(null,
"{category}",
new
{
controller = "Products",
action = "List",
page = 1
});
// Category/Page2
routes.MapRoute(null,
"{category}/Page{page}",
new
{
controller = "Products",
action = "List",
},
new
{
page = @"\d+"
});
});
}
}
P.S.Net Core版本为2.2
您可以将它们放在另一个文件中:
public static class Routing
{
public static void Include(IApplicationBuilder app)
{
app.UseMvc(routes =>
{
// /
routes.MapRoute(null, "", new
{
controller = "Products",
action = "List",
category = "",
page = 1
});
// Page2
routes.MapRoute(null,
"Page{page}",
new
{
controller = "Products",
action = "List",
category = ""
},
new { page = @"\d+" }
);
}
);
}
}
然后在`Startup'中调用它class:
public class Startup
{
...
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseStaticFiles();
Routing.Include(app);
...
}
}
我正在努力学习 Adam Freeman 的书 "ASP .NET MVC"。在这本书中有一章作者建议将路由放入特殊配置文件App_Start/RouteConfig.cs
。它看起来不错,但我正在尝试在 .Net Core 的帮助下实现它。我没有找到路线的特殊位置,所以我将路线放入 Startup.cs
。但它看起来非常丑陋。也许有人知道这种情况的优雅解决方案?
这是我的代码 Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// services are here ..
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
//app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
app.UseHttpsRedirection();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
// /
routes.MapRoute(null, "", new
{
controller = "Products",
action = "List",
category = "", page = 1
});
// Page2
routes.MapRoute(null,
"Page{page}",
new
{
controller = "Products",
action = "List",
category = ""
},
new { page = @"\d+" }
);
// Category
routes.MapRoute(null,
"{category}",
new
{
controller = "Products",
action = "List",
page = 1
});
// Category/Page2
routes.MapRoute(null,
"{category}/Page{page}",
new
{
controller = "Products",
action = "List",
},
new
{
page = @"\d+"
});
});
}
}
P.S.Net Core版本为2.2
您可以将它们放在另一个文件中:
public static class Routing
{
public static void Include(IApplicationBuilder app)
{
app.UseMvc(routes =>
{
// /
routes.MapRoute(null, "", new
{
controller = "Products",
action = "List",
category = "",
page = 1
});
// Page2
routes.MapRoute(null,
"Page{page}",
new
{
controller = "Products",
action = "List",
category = ""
},
new { page = @"\d+" }
);
}
);
}
}
然后在`Startup'中调用它class:
public class Startup
{
...
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseStaticFiles();
Routing.Include(app);
...
}
}