我想要实现 CMS,并且希望为 View 提供一些设置。
这些设置可能是网站名称、公司名称,也可能是一些更复杂的项目。
我希望这些在每个 View 上都可用,而不使用强类型模型,例如 ViewData-ViewBag,但不必在每个操作中设置它。
我认为我必须创建一个 ControllerFactory
来在每个 CreateController
上设置 ViewBag
。
您认为解决此问题的最佳方案是什么?
最佳答案
创建您自己的应用程序 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/