有没有人试过这个?
是sitecore和MVC竞争还是补充技术?
欢迎任何建筑理念。
解决方法
需要对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; } } }
(编辑9/13/2011:我有一段时间没有使用上面的修复)。
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(); } } }
如果您在Sitecore网址中使用语言,则需要添加一些自定义逻辑,将Sitecore链接生成与MVC ActionLink生成相结合,以确保语言添加到MVC网址的开头。然而,对于上面的管道修改,向URL添加语言应该没有对MVC路由的副作用(因为Sitecore在读取语言之后重写URL)。
再次,此方法仅对某些类型的应用程序有用。在这些情况下,Sitecore为您的模型提供了一个很好的数据层。查看创建自定义项包装器以基于Sitecore项目创建强类型域对象。
(编辑9/13/2011:自定义项目生成器非常适合这个http://blog.velir.com/index.php/2010/10/19/custom-item-generator/)
最好的运气。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。