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/)
祝你好运.
我认为你应该问的真正问题是; 如果你已经有Sitecore - 为什么你想要引入MVC的开销和complicatino?
您是否在基本网站之外有任何需要MVC的业务要求?
| 归档时间: |
|
| 查看次数: |
11904 次 |
| 最近记录: |