我正在尝试包括 .css
在我的 _Layout.cshtml
中基于 Controller 和操作的文件
@{
var actionCssName =
$"{ViewContext.RouteData.Values["Controller"]}." +
$"{ViewContext.RouteData.Values["Action"]}.css";
}
<link href="/css/@actionCssName" rel="Stylesheet" type="text/css" />
引用.css
文件名称如下:css/Controller.Action.css
与此同时,我的 Controller 中的操作不使用默认 名称,而是用HttpGet
修饰。 :
[HttpGet("report")]
public IActionResult GetReport()
{
return View("Report", new ReportBody { ... });
}
不幸的是ViewContext.RouteData.Values["Action"]
返回名称 GetReport
而不是 report
这与 .css
不匹配文件,因为最终名称是 css/TestController.GetReport.css
.如果可以获得操作的别名,我宁愿不重命名它。
还是我的做法完全错误,还有另一种实际可行的方法?
最佳答案
您要么必须将方法名称从 GetReport
更改为 Report
[HttpGet("report")]
public IActionResult Report()
{
return View("Report", new ReportBody { ... });
}
或者你可以使用ActionName
属性
[HttpGet("report")]
[ActionName("Report")]
public IActionResult GetReport()
{
return View("Report", new ReportBody { ... });
}
关于c# - 我可以获得 HttpGet 设置的操作别名以包含同名的 css 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48961502/