您将如何使用ASP.NET MVC在CMS中创建页面?

时间:2009-04-28 04:12:32

标签: asp.net-mvc model-view-controller

在内容管理系统中,您通常可以动态创建页面,例如

www.website.com.au/home.aspx

www.website.com.au/projects.aspx

www.website.com.au/contact-us.aspx

在我们编写的先前CMS中,当用户选择在其站点中创建新页面时,我们在磁盘上物理创建了这些文件。我们从基本模板页面复制了新文件,重命名了文件,并在例如

后面的代码中重命名了该类

template_page.aspx和template_page.aspx.cs变为

projects.aspx和projects.aspx.cs

这一切都是通过我们的CMS应用程序完成的。没有文件需要由用户手动创建。

这种方法如何使用MVC?

例如www.website.com.au/home /

www.website.com.au/projects /

www.website.com.au/contact-us /

据推测,我们需要动态创建控制器和视图吗?

这似乎比旧方法更麻烦,但我认为它是可行的。

有人能想到更聪明的方法吗?

1 个答案:

答案 0 :(得分:0)

您应该可以使用一个控制器和一些视图(显示,创建,编辑)和一些路由工作。我为一个像这样的个人项目做了一个超级简单的实现。我将此路由放在路由列表的顶部附近,并使用约束来确定是否应将其视为我的规则中的静态页面。我的实现没有任何层次结构,即pages / About-us / contact - only / contact。

route:
routes.MapRoute("StaticContent", "{title}",
  new { controller = "Page", action = "Details"},
  new { title = new InvalidTitleContstraint()});


controller:
public class PageController : Controller
{
    // Details checks if it can find a matching title in the DB
    // redirects to Create if no match 
    public ActionResult Details(string title)
    // GET
    public ActionResult Create()
    // POST
    public ActionResult Create(Page page)
}