在asp.net核心中结合传统路由和属性路由

时间:2018-01-18 14:47:44

标签: asp.net-core .net-core asp.net-core-mvc asp.net-core-2.0 asp.net-core-routing

我试图将传统和属性路由结合在一起。

然而,它并没有按预期工作,可能是因为我错过了做某事。

到目前为止我所拥有的:

路由:

builder.MapRoute("Default", "{controller=Home}/{action=Index}/{id?}");

家庭控制器:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

属性映射控制器:

[Route("Admin")]
public class AdminLockController : Controller
{
    [Route("ControlCenter")]
    public async Task<IActionResult> Index()
    {
        return View();
    }
}

_Layout.cshtml

<a asp-controller="Home" asp-action="Index">
<img id="app-logo-image" src="/img/corporate_logo.png"/>
</a>

现在,当视图Home \ Index.cshtml被渲染时,_Layout.cshtml中的链接将变为 <a href="/"></a>(正确)。

但是当视图AdminLock \ Index.cshtml得到渲染时,链接是<a href=""></a>(错误)。

所以我想我需要做一些额外的配置,但不知道是什么。任何提示?

更新1: 它在新创建的mvc项目中完美运行。所以在我的项目中它必须是错误的......我会试着找出问题所在......

1 个答案:

答案 0 :(得分:0)

找到问题。

我正在使用Smidge作为捆绑器和Minifier。

我在Mvc中间件之前注册了Smidge中间件。这似乎弄乱了路由。我在githup上打开了一个问题。见https://github.com/Shazwazza/Smidge/issues/71

更改订单可解决问题。