【发布时间】:2018-08-08 07:19:38
【问题描述】:
我有一个自定义 IRouter 实现,其基本形式如下所示,为简单起见,我硬编码了一些值:
public class MyRouter : IRouter
{
private readonly IRouter router;
public MyRouter (IRouter router)
{
this.router = router;
}
public async Task RouteAsync(RouteContext context)
{
context.RouteData.Values["controller"] = "Home";
context.RouteData.Values["action"] = "Index";
context.RouteData.Values["area"] = "";
await router.RouteAsync(context);
}
}
这适用于没有定义[Route] 属性的简单控制器:
public class HomeControlller
{
public IActionResult Index()
{
return View();
}
}
同样,这可以正常工作。转到/ 将显示该页面。
但是,只要我添加 [Route] 属性,我就会得到 404:
[Route("foo")]
public class HomeControlller
{
[Route("bar")]
public IActionResult Index()
{
return View();
}
}
现在,如果我转到/foo/bar,我将看到该页面。但是,如果我转到 /,我会得到 404。
我怎样才能解决这个问题?如果我在转到 /foo/bar 时查看 RouteData 值,我仍然会将值 Home 和 Index 分别视为控制器和操作的值。
【问题讨论】:
标签: c# asp.net-core asp.net-core-mvc url-routing asp.net-core-routing