【问题标题】:Adding simple CMS functionality to an existing MVC application向现有 MVC 应用程序添加简单的 CMS 功能
【发布时间】:2015-11-04 09:24:49
【问题描述】:

我们有许多用作面向公众的网站的 MVC 应用程序。这些应用程序是使用 MVC 构建的,因为这是开发人员理解的技术堆栈,并且主要交付的内容基于业务流程数据。

然而,越来越多的我们被要求向网站添加“另一个页面”,从所有意图和目的来看,它都是一个普通的旧静态内容页面。这最终涉及:

  1. 添加新路线
  2. 使用所需的 HTML 创建视图

我们有各种“本土”解决方案,现在可以从数据库中为这些视图提取 HTML。然而,这意味着我们正在编写自定义后端数据输入屏幕以及上面的 1 和 2。

所以....一定有更好的方法。有没有人对如何添加简单的 CMS 功能,我们可以提供给最终用户,插入我们的 MVC 应用程序有任何实际经验或建议?我们需要为最终用户提供以下功能:

  1. 创建新页面,使用所见即所得编辑页面
  2. 为 SEO 添加元标签和规范标签
  3. 为 SEO 目的指定 uri 的 url 部分

感谢所有见解。

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    是否可行:

    有一个数据库表来存放这些页面的内容。例如标题、摘要、描述、网址、元数据、图片等...

    在前端有这些页面的模板。数据库数据填充此模板中的占位符。

    也许将所有页面保存在 www.yoursite.com/page/dynamic-page-url-from-db

    之类的基本 URL 上

    您可以在url 字段上使用Remote 属性验证来确保它们在数据库中都是唯一的。

    考虑到这一点,创建一个路由来捕获请求并根据 db.xml 提供的 URL 在 Page 控制器中过滤有效/无效请求。如果不存在 throw new HttpException(404, "Page Not Found"); 并且有错误处理程序将其拾取并提供您的 404。

    可以通过ViewBag 或专用section 设置META,在渲染视图时更改_Layout 文件。

    TinyMCE 是一个不错的所见即所得编辑器。如果您想在页面主体中嵌入图像,您甚至可以为其添加动态图像库功能。

    【讨论】:

    • 嗯....是的,我看到的唯一问题是路线会很棘手,因为他们不想将这些页面挂在 /page 上,但它们可以在任何地方,即 / here/dynamic-url 和 /there/dynamic-url 等,这里和那里是 URL 的一部分。这是我最担心的部分,因为完全有可能根据我们将它们插入路由表的位置,我们可能会无意中破坏 /here/already-valid-url 的现有页面
    • 您可以在路由中回退到控制器中处理这些页面 url 并做出适当响应的方法。路由是分层的,因此这可能是最后的手段(如默认值),例如:www.yoursite.com/dynamic-page-url我想最好的方法是运行一些测试。您可能需要一些路线组合来涵盖所有变化。
    • 好问题。我确信这是可能的,但如果没有看到当前路线设置,很难判断路线会有多复杂。
    • 我会用谷歌搜索所有路线,看看我想出了什么。其他路由非常标准,只是一堆指向各种控制器。
    • 好的,希望对我有所帮助。我以前做过类似的事情,所以我认为您希望做的事情是可能的。
    【解决方案2】:

    我正在努力将目前在要求苛刻的生产环境中使用的 CMS 制作成产品。我刚刚(截至 2015 年 1 月 20 日)制作了一个 NuGet 包,它将 CMS 安装到一个 MVC 项目中,应该可以添加到任何现有的 MVC 站点而不会破坏它。然后可以在需要的地方添加 CMS 功能。目前,我正在寻求与一些用户合作,帮助他们在他们的网站上将 CMS 投入生产,但是当您阅读本文时,这可能已经改变。查看http://www.lynicon.com 了解更多信息并注册一个 Slack 社区,我可以让你访问 NuGet 包。

    【讨论】:

    • 核心 CMS 功能模块(这是本用例所需的全部)现在可在 NuGet 上使用
    猜你喜欢
    • 2017-04-17
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    相关资源
    最近更新 更多