在 asp.net 核心中结合常规路由和属性路由
Combining conventional routing and attribute routing in asp.net core
我尝试将常规路由和属性路由结合在一起。
然而它没有按预期工作,可能是因为我错过了做某事。
我目前拥有的:
路由:
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 中的 link 将变为
<a href="/"></a>
(正确)。
但是当视图 AdminLock\Index.cshtml 得到渲染时 link 是 <a href=""></a>
(错误)。
所以我想我需要做一些额外的配置,但不知道是什么。有什么提示吗?
更新 1:
它在新创建的 mvc 项目中完美运行。所以一定是我的项目出了问题……我会试着找出问题所在……
找到问题。
我正在使用 Smidge 作为打包器和 Minifier。
我先注册了Smidge中间件,再注册了Mvc中间件。这似乎弄乱了路由。我在 githup 上开了一个问题。参见 https://github.com/Shazwazza/Smidge/issues/71
更改顺序可以解决问题。
我尝试将常规路由和属性路由结合在一起。
然而它没有按预期工作,可能是因为我错过了做某事。
我目前拥有的:
路由:
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 中的 link 将变为
<a href="/"></a>
(正确)。
但是当视图 AdminLock\Index.cshtml 得到渲染时 link 是 <a href=""></a>
(错误)。
所以我想我需要做一些额外的配置,但不知道是什么。有什么提示吗?
更新 1: 它在新创建的 mvc 项目中完美运行。所以一定是我的项目出了问题……我会试着找出问题所在……
找到问题。
我正在使用 Smidge 作为打包器和 Minifier。
我先注册了Smidge中间件,再注册了Mvc中间件。这似乎弄乱了路由。我在 githup 上开了一个问题。参见 https://github.com/Shazwazza/Smidge/issues/71
更改顺序可以解决问题。