asp.net-mvc - 从区域返回通用错误视图:如何使用控制器区域中的 _Layout 包装器?
问题描述
我有一个BaseController
带有错误视图的功能,效果很好:
public ViewResult ErrorView(string error, string errormessage)
{
ViewBag.ErrorType = error;
ViewBag.ErrorMessage = errormessage;
return View("~/Views/Shared/Error.cshtml");
}
从我的普通控制器扩展BaseController
并调用这个函数就像一个魅力。它包裹了视图Views/Shared/_Layout.cshtml
,一切都很好。
但是,当我从一个区域中扩展 basecontroller 的控制器调用此函数时,它也会将视图包装在Views/Shared/_Layout.cshtml
而不是Areas/MyArea/Views/Shared/_Layout.cshtml
如何在不ErrorView
为我的区域编写单独的函数的情况下更改此行为?
解决方案
这就是这些地区的问题。由于我不确定该框架是否可以推断出您所在的区域,因此我建议您这样做:
在您的 Area/Controllers 文件夹中添加一个 AreaBaseController,它将设置一个属性,女巫会告诉它。
在您的 BaseController 中:
public string Area { get; set; }
public ViewResult ErrorView(string error, string errormessage)
{
ViewBag.ErrorType = error;
ViewBag.ErrorMessage = errormessage;
return View($"~/{Area}/Views/Shared/Error.cshtml");
}
在那个 AreaBaseController 中:
public AreaBaseController()
{
Area = "MyArea";
}
您可能会更改 $"~/{Area}/ 部分,因为我没有尝试过,但它应该可以进行一些更改。
希望有帮助!
推荐阅读
- .net - MS Graph UserPrincipalName 与 OID 返回
- github - 引用 Github Actions 构建的工件
- rust - Rust 中的“静态不能评估析构函数”
- c# - 无法使用 SOAP 服务
- tableau-api - 通过 Tableau Server 从 Tableau Desktop 访问非公共 PostgreSQL 数据库
- r - 聚合打印列,但不将其保存到全局环境
- r - 在 R 的 data.table 中操作数据集时使用值而不是标签
- javascript - 如何使用javascript根据选择项更改值?
- javascript - React 可以只重新渲染组件的一部分吗?
- modbus - 带 MODBUS 的家庭助理