Para ciertos casos, puede haber un gran beneficio al fusionar los dos. MVC no es ideal para sitios basados en contenido. Sin embargo, las aplicaciones web con flujo estructurado y múltiples presentaciones de datos se benefician enormemente de ello. Sitecore tiene una cierta limitación cuando se trata de presentaciones múltiples de datos: solo puede definir un conjunto de detalles de diseño en un elemento. Si no tiene requisitos para la edición WYSIWYG o una vista previa sencilla con un clic, puede usar Sitecore como un repositorio de datos y aprovechar algunos de los valores de contexto que provienen de su canalización (como el idioma).
Un par de modificaciones son necesarias para la canalización HTTP Sitecore para hacer este trabajo:
1) Si se utiliza la extensión aspx en IIS6 para conseguir ASP.NET para manejar las solicitudes de MVC (por ejemplo /Controller.aspx/Action) , arregle el análisis FilePath de Sitecore (hay un error en cómo Sitecore resuelve el FilePath que dará lugar a que la ruta se corte).
Para arreglar esto, coloque un nuevo procesador al comienzo de la tubería 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 Edición: No he tenido que utilizar la corrección anterior en algún tiempo.)
2) Envía Sitecore hacer caso omiso de las direcciones URL que se enrutan a ASP.NET MVC
Para lograr esto, coloque un nuevo procesador en la tubería httpRequestBegin después del ItemResolver.
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();
}
}
}
Si utilizando lenguajes en su Sitecore URL, tendrá que añadir un poco de lógica personalizada que combina la generación de enlace con la generación de Sitecore MVC ActionLink, para asegurar que el lenguaje se añade al comienzo de la URL de su MVC. Sin embargo, con las modificaciones de la tubería arriba, la adición del idioma a la URL no debería tener efectos secundarios en el enrutamiento MVC (porque Sitecore reescribe la URL después de leer el idioma).
Una vez más, este enfoque solo es útil para ciertos tipos de aplicaciones. Sin embargo, en esos casos, Sitecore es una excelente capa de datos para su modelo. Observe la creación de envolturas de elementos personalizados para crear objetos de dominio fuertemente tipados en función de los elementos de Sitecore.
(9/13/2011 Edición: Custom Generador de artículos funciona muy bien para este http://blog.velir.com/index.php/2010/10/19/custom-item-generator/.)
mejor de la suerte.
Vale la pena señalar a cualquiera que viene a través de este ahora que Sitecore apoyará MVC como un marco de primera clase en una versión posterior. http://www.sitecore.net/Community/Business-Blogs/Technical-Trends/Posts/2012/06/MVC-and-Sitecore-651-Overview.aspx –
Aquí hay una buena colección de contenido si solo está comenzando con Sitecore y MVC: https://sitecore-community.github.io/docs/sitecore-mvc/ –
Tengo experiencia con Sitecore v8 +, aquí MVC es una opción predeterminada y totalmente compatible. –