首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sitecore和ASP.net MVC

Sitecore和ASP.net MVC
EN

Stack Overflow用户
提问于 2009-08-20 19:08:03
回答 9查看 12.5K关注 0票数 36

我们正在开始一个新的项目,sitecore作为我们的CMS。我正在考虑使用Sitecore作为内容创作工具,并与Sitecore一起使用ASP.net MVC作为内容交付(CDA端)。很想听听你对此的想法和想法。

有人试过这个吗?

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

欢迎任何架构上的想法。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-11-03 23:29:59

在某些情况下,将两者合并可能会带来巨大的好处。MVC不太适合内容驱动的网站。然而,具有结构化流程和多种数据表示的web应用程序会从中受益良多。当涉及到数据的多个表示时,Sitecore有一些限制--您只能在一个项目上定义一组设计细节。如果您不需要WYSIWYG编辑或简单的一键预览,您可以使用Sitecore作为数据存储库,并利用其管道中的一些上下文值(例如语言)。

要实现这一点,需要对Sitecore HTTP管道进行一些修改:

1)如果使用IIS6中的aspx扩展来让ASP.NET处理MVC请求(例如/Controller.aspx/Action),修复Sitecore的FilePath解析(Sitecore解析FilePath的方式中存在一个错误,这将导致路径被截断)。

要解决此问题,请在httpRequestBegin流水线的开头放置一个新处理器。

代码语言:javascript
运行
复制
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;
        }
    }
}

(编辑2011年9月13日:我已经有一段时间没有使用上面的修复了。)

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

为此,请在ItemResolver之后的httpRequestBegin流水线中放置一个新处理器。

代码语言:javascript
运行
复制
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();
        }
    }
}

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

同样,这种方法只对某些类型的应用程序有用。不过,在这些情况下,Sitecore为您的模型提供了一个很好的数据层。研究如何创建自定义项包装器,以基于Sitecore项创建强类型的域对象。

(2011年9月13日编辑:自定义项目生成器对此非常有用。http://blog.velir.com/index.php/2010/10/19/custom-item-generator/)

祝你好运。

票数 27
EN

Stack Overflow用户

发布于 2009-08-21 10:55:49

我认为你在这里应该问的真正问题是:如果你已经有了Sitecore -为什么你还想要引入MVC的开销和复杂性?

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

票数 8
EN

Stack Overflow用户

发布于 2010-04-01 07:12:20

我赞同Mark关于需求的评论。冒这个险值得吗?如果您决定不使用本机渲染功能,则很可能会丢失Sitecore的以下功能:

适用于营销者的

  1. OMS
  2. Web表单
  3. 条件呈现
  4. 页面编辑器
  5. 页面设计器

也许更多。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1308226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档