0

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

这是为了使非技术人员能够编辑内容而无需进入源代码(例如视图)并进行更改。

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

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

然后文本由视图呈现。

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

如果我有用于提取内容的 HtmlHelper 扩展而不是基本控制器,那会更好吗?我从视图中调用它?

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

4

1 回答 1

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

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

  3. 不应使用 HTML 助手来拉取任何内容。它们旨在呈现预先填充了所提供数据的 UI 元素。

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

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

这是为了使非技术人员能够编辑内容而无需进入源代码(例如视图)并进行更改。

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

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

于 2009-09-28T11:17:58.440 回答