我正在开发一个 ASP.NET MVC 应用程序,其中任何页面的内容都可以从数据库(如果存在)中提取并显示在页面上。

这是为了使非技术人员可以编辑内容而无需进入源代码(例如观点)并改变事情。

我这样做的方式是,每个控制器都派生自一个基本控制器。基本控制器重载“OnActionExecuted”,并利用此机会提取分配给当前操作/控制器的任何内容。

如果该操作返回派生自“ContentViewModel”的 ViewModel,它将使用数据库中的文本填充 ViewModel 的“Text”属性。

然后文本由视图渲染。

你能看出这个设计有什么弱点吗?

如果我使用 HtmlHelper 扩展来提取内容(我从视图中调用),而不是使用基本控制器,会更好吗?

我问这个问题的原因之一是,拥有自己的基本控制器似乎会干扰调用“Html.RenderAction”,它似乎期望指定的控制器直接继承自“System.Web.Mvc.Controller”。

有帮助吗?

解决方案

  1. ActionFilters 不应该用来拉取内容。

  2. 控制器不应用于提取内容,而应仅通过应用简单的逻辑来分派传入请求。

  3. HTML 助手不应用于提取任何内容。它们旨在渲染预填充了所提供数据的 UI 元素。

可以从数据库中提取任何页面内容的应用程序

这基本上就是大多数应用程序的运行方式。

这是为了使非技术人员可以编辑内容而无需进入源代码(例如观点)并改变事情。

对于非技术人员编辑内容来说,应该有一个合适的 UI。独立于项目底层技术,非技术人员永远不应该编辑代码。

我建议你不要做出任何奇怪的事情,但要保持清晰。实现您的业务层,该层将向视图将呈现的模型提供数据。创建一个 UI 供其他人编辑内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top