c# - 为 MVC 中的每个 View 提供自定义变量(设置)

标签 c# asp.net-mvc

我想要实现 CMS,并且希望为 View 提供一些设置。

这些设置可能是网站名称、公司名称,也可能是一些更复杂的项目。

我希望这些在每个 View 上都可用,而不使用强类型模型,例如 ViewData-ViewBag,但不必在每个操作中设置它。

我认为我必须创建一个 ControllerFactory 来在每个 CreateController 上设置 ViewBag

您认为解决此问题的最佳方案是什么?


Execute Code on Every Request 可能存在重复

最佳答案

创建您自己的应用程序 Controller 并覆盖OnActionExecuting。您可以在 Viewbag 中初始化您自己的属性:

public abstract class ApplicationController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // set your ViewBag.Settings here
    }
}

创建从 ApplicationController 派生的所有 Controller 类:

public class HomeController : ApplicationController { ... }

现在,您可以从所有 View 访问 ViewBag.Settings,而无需在每个操作中显式设置此属性。

关于c# - 为 MVC 中的每个 View 提供自定义变量(设置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21572036/

相关文章:

asp.net-mvc - MVC 5.2.2.0 中使用的 UserManager.CreateAsync 默认哈希

c# - 如何从 Firebase 获取 Item Key

c# - 当我需要检索密码以供使用时安全地存储凭据

c# - 在可移植类库中引用资源文件时找不到 ResourceMap 错误

c# - 在 C# 中生成准随机数的最简单方法是什么?

c# - Azure 应用服务 File.ReadAllText 返回文件未找到异常,但文件存在于该位置

c# - ASP.Net Mvc - View 调用可能导致数据检索的函数是否可以接受?

asp.net-mvc - 授权属性的 MVC5 声明版本

javascript - ASP.NET MVC 2 RC - 使用数据注释的客户端验证因多个属性而失败

c# - 检查用户控件是否在窗口范围内