【问题标题】:Using ASP.Net MVC 4 with a Content Management System将 ASP.Net MVC 4 与内容管理系统一起使用
【发布时间】:2012-10-10 12:15:37
【问题描述】:

我有一个在 ColdFusion 上运行的 CMS,为此我通常有一个也在 ColdFusion 上运行的前端。出于学习的原因,我现在想用 ASP.Net MVC 4 Framework 来实现前端。对于 MVC 应用程序,您通常有一个简单的控制器/动作路由,这对我的 CMS 没有任何意义,因为它的结构完全不同。

我的 CMS 有一个导航模块作为基础,它处理网站的整个结构和路由。在每个导航条目上,我可以分配一个页面,该页面可以包含多个元素(例如简单的 HTML 代码、新闻模块或图库模块)。

网站结构示例:

  • 主页 -> 页面 -> 元素 (html)
  • 关于 -> 页面 -> 元素(html、...)
    • our-company -> 页面 -> 元素(html、新闻、图库)
    • our-products -> 页面 -> 元素(html、...)
  • 联系 -> 页面 -> 元素(html、联系表)

因此,如果用户在浏览器中打开“www.example.com/about/our-company.html”,则应用程序会找到负责的导航条目“our-company”,它是条目“about ”。现在它应该呈现分配给此导航条目页面的元素“html”、“news”和“gallery”。

现在我的问题是,您将如何使用 ASP.Net MVC 框架实现这一点?甚至可能吗? MVC 在这里有意义吗?

我想为每个页面元素创建一个模型、控制器和视图。我是否需要一个基本控制器之类的东西,它可以在不同的(元素)控制器中呈现多个动作?

更新

网站结构不是静态的,而是动态的,由 CMS 管理。

另一个例子:www.example.com/de/about/more/andmore/something.html

在此示例中,我将在导航表中搜索键“某物”并获取相关页面。现在我想为这个页面渲染所有元素(我只是称它们为元素)。每个元素都应该有自己的控制器和多个操作。

【问题讨论】:

  • 大多数 CMS 没有物理页面。以 DotNetNuke 为例,这些页面包含的所有用户页面、标题、文本等都存储在 MS SQL 中。
  • 我的 CMS 还将所有页面存储在 MS SQL 中。我的示例中的 URL 只是针对搜索引擎进行了优化。
  • 我想我的意思是,您需要一个处理程序或控制器或路由来执行硬核路由。您必须从其中一个中查找数据库中的导航。您可以使用通配符/foo/{*}/bar 路由来响应所有内容
  • 基本上我可以创建一个路由规则,将每个请求转发到一个NavigationController,它会在数据库中找到负责的页面。但我的问题是,每个页面都可以有一个或多个“页面元素”(这就是我所说的)。 “页面元素”可以是简单的 html 文本、图片、图库、新闻列表、动态表单甚至是整个商店。由于我们有大约 20 个这样的“页面元素”,我想知道将这些代码放在哪里。我认为最好的解决方案是,为每个“页面元素”创建一个控制器......
  • ...但是我的NavigationController如何渲染多个“页面元素”-Controller?

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

Asp.net MVC 默认路由好像没问题

默认路由定义同样适用于您的情况。至少我没有看到任何特别的问题:

{controller}/{action}/{id}

你有控制器的地方:

  • 家庭控制器
  • AboutController - 以您为例,此控制器将具有 OurCompany 操作 (/about/ourcompany)
  • 联系人控制器

还不完全清楚

但我想您应该提供您希望在应用程序中包含的 URL,我们可能会提供帮助。我不确定 elements 在您的导航中是什么意思?这如何转化为 URL?

【讨论】:

  • @android:所以,如果我了解您的路由,您想要类似:{lang}/{sections*}/{page} 其中部分可以包含多个 URL 段?那是你想要的吗?如果这是肯定的,我仍然不确定你对控制器和元素的想法。这些元素是否像某种页面组件/部分?那么它们由几个 HTML 元素组成,然后与其他组件/部分一起放在页面上?像导航、用户上下文、帖子、帖子 cmets 等?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 2015-01-21
  • 2011-10-31
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多