我有一个角度应用程序,由于功能性,我已将其拆分为2。在这里,我们将调用应用程序Default和Admin。
在我的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.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视图
为了配合这一点,我已将AdminController
添加为
[Authorize]
public class AdminController : Controller
{
[Route("~/Admin/{id?}")]
public IActionResult Index()
{
return View();
}
}
但如果我尝试加载一个包含2个以上参数的网址,例如www.mysite.com/admin/page/12,则会返回我的Home / Index.cshtml。
如果“管理”一词位于域名之后,无论URL中有多少参数,我如何才能返回管理员视图?
答案 0 :(得分:1)
更改您的代码,如下所示:
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" });
答案 1 :(得分:0)
[路线("〜/ 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