Model view controller MVC-创建新视图而不向控制器添加操作

Model view controller MVC-创建新视图而不向控制器添加操作,model-view-controller,routing,content-management-system,extensibility,Model View Controller,Routing,Content Management System,Extensibility,我正在使用asp.NETMVC1.0开发一个类似CMS的迷你应用程序(2.0发布后我会升级它)。一旦我想要的功能,这是非常重要的一个CMS,是管理员的能力,添加页面到他们的网站 本质上,如果管理员想要添加一个名为“Links”的页面,我希望他们能够这样做,而不必经历将操作添加到控制器和编译新程序集的任何麻烦 我有一个解决方案的想法,我想知道社区的想法 我认为我应该编写一个名为UserGeneratedGenericController的类来扩展控制器类。在这个类中,我将有一个操作,它读取一个参数

我正在使用asp.NETMVC1.0开发一个类似CMS的迷你应用程序(2.0发布后我会升级它)。一旦我想要的功能,这是非常重要的一个CMS,是管理员的能力,添加页面到他们的网站

本质上,如果管理员想要添加一个名为“Links”的页面,我希望他们能够这样做,而不必经历将操作添加到控制器和编译新程序集的任何麻烦

我有一个解决方案的想法,我想知道社区的想法

我认为我应该编写一个名为UserGeneratedGenericController的类来扩展控制器类。在这个类中,我将有一个操作,它读取一个参数并重定向到与传递给该操作的参数对应的视图

我还必须在
Global.asax.cs
文件中编辑路由

所以
/UserGeneratedGenericController/Links
将执行与
/UserGeneratedGenericController/News
将点击,但会根据需要显示视图


你说呢?我对你对这种方法的评论和你对其他方法的建议很感兴趣。

你想获取页面标题,并为其创建一个唯一的url段塞,然后你想能够根据url段塞从数据库加载内容(使用url段塞作为id,而不是实际的数据库id)


因此,您的路由是/Pages/{urlslaug},示例是/Pages/Links。然后,页面控制器上的索引操作将拉出url段塞(链接),并从存储器中加载适当的内容,并在主布局中呈现内容。我想你是这样想的,只要确保当用户添加页面时,你为它创建了一个唯一的url。用下划线替换空格、删除特殊字符等,以创建url安全密钥,用于在请求时加载页面信息。

我认为您提出的方法是正确的,这是我建议的解决方案。我正在寻找对此解决方案的评论或其他建议。没错,的确如此,但作者希望得到社区反馈。在CRM领域,有一些策略可以解决这一问题。url slug的思想使事情变得更加明显,并使用了一个这个域通用的术语。现在,作者可以感觉到这种方法是可以接受的,并且学习了一些常用的术语。我的评论是,这是最常见的,也是被接受的实践。有不同的方法处理鼻涕虫,这将是一个不同的问题。StackOverflow结合了id和标题。其他网站只使用标题。如果两页的标题相同,那么您可能需要附加数字。一旦创建了slug,您就必须决定是否要编辑页面标题。通常,您希望保持slug不变,即使标题发生了变化,这样您就不会断开到页面的链接。
public ActionResult Index(string UrlSlug) {
  // Get Content For Page {UrlSlug}
}