我正在尝试根据控制器和.css
_Layout.cshtml
个文件
@{
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
同时,我的控制器中的操作不使用默认名称,而是使用HttpGet
进行修饰:
[HttpGet("report")]
public IActionResult GetReport()
{
return View("Report", new ReportBody { ... });
}
不幸ViewContext.RouteData.Values["Action"]
返回的名称GetReport
而不是report
,与.css
文件不匹配,因为最终名称为css/TestController.GetReport.css
。如果可以获取动作的别名,我宁愿不重命名。
或者我这样做完全错了,还有另一种方法可以实际运作吗?
答案 0 :(得分:4)
您必须将方法名称从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 { ... });
}