加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Sitecore和ASP.net MVC

发布时间:2020-12-15 19:36:34 所属栏目:asp.Net 来源:网络整理
导读:我们开始一个新的项目,使用sitecore作为我们的CMS。我正在考虑使用Sitecore作为内容创作工具,并使用ASP.net MVC在内容交付(CDA)方面与Sitecore。很愿意听到你的想法和想法。 有没有人试过这个? 是sitecore和MVC竞争还是补充技术? 欢迎任何建筑理念。 解
我们开始一个新的项目,使用sitecore作为我们的CMS。我正在考虑使用Sitecore作为内容创作工具,并使用ASP.net MVC在内容交付(CDA)方面与Sitecore。很愿意听到你的想法和想法。

有没有人试过这个?

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

欢迎任何建筑理念。

解决方法

对于某些情况,合并两者可能有巨大的好处。 MVC不适合内容驱动的网站。然而,具有结构化流和多个数据呈现的web应用程序从中获益良多。当涉及多个数据表示时,Sitecore有一些限制 – 您只能在一个项目上定义一组设计详细信息。如果您没有对所见即所得编辑或简单的一键预览的要求,则可以使用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;
        }
    }
}

(编辑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/)

最好的运气。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读