C# 如果url以Admin开头并包含X个参数,则为默认MVC路由
我有一个angular应用程序,由于其功能,我将其分为2个部分。在这里,我们将调用应用程序默认和管理 在我的ASP.NET MVC网站中,我定义了这个路由,它将捕获所有URL并加载Home/Index.cshtml视图C# 如果url以Admin开头并包含X个参数,则为默认MVC路由,c#,asp.net,angularjs,asp.net-mvc,asp.net-core,C#,Asp.net,Angularjs,Asp.net Mvc,Asp.net Core,我有一个angular应用程序,由于其功能,我将其分为2个部分。在这里,我们将调用应用程序默认和管理 在我的ASP.NET MVC网站中,我定义了这个路由,它将捕获所有URL并加载Home/Index.cshtml视图 // Mvc routes app.UseMvc(builder => { // default goes to Home, and angular will deal with client side routing builder.MapRou
// Mvc routes
app.UseMvc(builder =>
{
// default goes to Home, and angular will deal with client side routing
builder.MapRoute(
name: "default",
template: "{*url}",
defaults: new { controller = "home", action = "index" });
});
现在,如果用户转到包含admin一词的URL(例如www.mysite.com/admin或www.mysite.com/admin/something),那么我想返回admin/Index.cshtml视图
// Mvc routes
app.UseMvc(builder =>
{
// default goes to Home, and angular will deal with client side routing
builder.MapRoute(
name: "default",
template: "{*url}",
defaults: new { controller = "home", action = "index" });
});
为了实现这一点,我添加了我的AdminController
[Authorize]
public class AdminController : Controller
{
[Route("~/Admin/{id?}")]
public IActionResult Index()
{
return View();
}
}
但如果我尝试加载一个包含2个以上参数的url,例如www.mysite.com/admin/page/12,则会返回我的主页/Index.cshtml
如果Admin一词位于域名之后,那么我如何才能返回我的Admin视图,无论URL中有多少个参数???[Route(“~/Admin/{id?}”)]就是无法捕获www.mysite.com/Admin/page/12,所以它会转到默认路由。您应该通过查询字符串传递参数,或者为每个参数组合添加不同的操作
[Route("~/Admin/")]
public IActionResult Index(int? id, int page){}
因此,您可以使用www.mysite.com/admin/?id=1&page=12更改代码,如下所示:
routes.MapRoute(
name: "spa-fallback-admin",
template: "admin/{*url}",
defaults: new { controller = "Admin", action = "Index" });
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "Home", action = "Index" });