Sitecore和ASP.net MVC

Vin*_*nod 35 asp.net-mvc sitecore

我们正在开始一个新项目,其中sitecore作为我们的CMS.我正在考虑使用Sitecore作为内容创作工具,并在内容交付(CDA)方面使用ASP.net MVC以及Sitecore.很想听听你的想法和想法.

有没有人试过这个?

sitecore和MVC是竞争还是补充技术?

欢迎任何建筑理念.

tec*_*414 26

对于某些情况,合并两者可能会有很大的好处.MVC并不适合内容驱动的网站.但是,具有结构化流程和多个数据呈现的Web应用程序从中受益匪浅.Sitecore在多个数据表示方面有一定的局限性 - 您只能在项目上定义一组设计细节.如果您没有WYSIWYG编辑或简单的单击预览要求,则可以将Sitecore用作数据存储库,并利用其管道中的某些Context值(例如语言).

Sitecore HTTP管道需要进行一些修改才能使其工作:

1)如果在IIS6中使用aspx扩展来让ASP.NET处理MVC请求(例如/Controller.aspx/Action),修复Sitecore的FilePath解析(Sitecore如何解析FilePath将导致路径获取的错误切碎的).

要解决此问题,请在httpRequestBegin管道的开头放置一个新处理器.

public class MvcFixHttpProcessor : Sitecore.Pipelines.HttpRequest.HttpRequestProcessor
{
    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        //when using a path such as /Controller.aspx/Blahblahblah, Sitecore's parsing of FilePath can break if Blahblahblah is too long
        RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(args.Context));
        if (routeData != null)
        {
            args.Url.FilePath = args.Context.Request.Url.LocalPath;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

(编辑2011年9月13日:我不必在一段时间内使用上述修复程序.)

2)告诉Sitecore忽略路由到ASP.NET MVC的URL

要实现此目的,请在ItemResolver之后的httpRequestBegin管道中放置一个新处理器.

public class SystemWebRoutingResolver : Sitecore.Pipelines.HttpRequest.HttpRequestProcessor
{
    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args)
    {
        RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(args.Context));
        if (routeData != null)
        {
            args.AbortPipeline();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果在Sitecore URL中使用语言,则需要添加一些将Sitecore链接生成与MVC ActionLink生成相结合的自定义逻辑,以确保将语言添加到MVC URL的开头.但是,通过上面的管道修改,向URL添加语言应该对MVC路由没有副作用(因为Sitecore在读取语言后重写URL).

再一次,这种方法仅适用于某些类型的应用程序.但在这些情况下,Sitecore为您的模型提供了出色的数据层.查看创建自定义Item包装器以基于Sitecore项创建强类型域对象.

(编辑2011年9月13日:自定义项发生器这个伟大工程.http://blog.velir.com/index.php/2010/10/19/custom-item-generator/)

祝你好运.

  • MVC绝对非常适合内容驱动的网站.请解释为什么你认为不是 (4认同)

Mar*_*idy 8

我认为你应该问的真正问题是; 如果你已经有Sitecore - 为什么你想要引入MVC的开销和complicatino?

您是否在基本网站之外有任何需要MVC的业务要求?

  • 因为网络表格可怕吗? (2认同)

小智 6

我是马克关于要求的评论.风险值得吗?如果您决定不使用本机呈现功能,您很可能会失去Sitecore的以下功能:

  1. OMS
  2. 营销人员的Web表单
  3. 有条件的渲染
  4. 页面编辑器
  5. 页面设计师

甚至更多.