Sitecore и ASP.net MVC

Право Paul.
В PowerShell, параметры функции не включаются в круглую скобку. (Параметры метода все еще.)
Ваш начальный вызов просто передавал один большой массив функции, а не три отдельных параметра, которые Вы хотели.

35
задан David Basarab 21 August 2009 в 14:39
поделиться

5 ответов

В некоторых случаях объединение двух может быть огромным преимуществом. MVC не очень подходит для сайтов, ориентированных на контент. Однако веб-приложения со структурированным потоком и множественным представлением данных от этого очень выигрывают. Sitecore имеет некоторое ограничение, когда дело доходит до нескольких представлений данных - вы можете определить только один набор деталей дизайна для элемента. Если у вас нет требований к редактированию WYSIWYG или простому предварительному просмотру одним щелчком, вы можете использовать Sitecore в качестве хранилища данных и воспользоваться преимуществами некоторых значений контекста, которые поступают из его конвейера (например, языка).

A В конвейер HTTP Sitecore необходимо внести несколько изменений, чтобы эта работа работала:

1) Если вы используете расширение aspx в IIS6, чтобы заставить ASP.NET обрабатывать запросы MVC (например, /Controller.aspx/Action), исправьте Sitecore ' s Анализ 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;
        }
    }
}

(Edit 9 / 13/2011: мне не приходилось использовать вышеуказанное исправление в течение некоторого времени.)

2) Скажите Sitecore игнорировать URL-адреса, которые маршрутизируются на ASP.NET MVC

Для этого поместите новый процессор в Конвейер httpRequestBegin, следующий за 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();
        }
    }
}

Если вы используете языки в URL-адресах Sitecore, вам нужно будет добавить некоторую настраиваемую логику, которая объединяет создание ссылок Sitecore с генерацией MVC ActionLink, чтобы гарантировать, что этот язык добавлен в начало вашего URL-адреса MVC. Однако с модификациями конвейера выше, добавление языка к URL-адресу не должно иметь побочных эффектов для маршрутизации MVC (поскольку Sitecore перезаписывает URL-адрес после чтения языка).

И снова этот подход полезен только для определенных типов приложений. Однако в таких случаях Sitecore создает отличный уровень данных для вашей модели. Изучите возможность создания пользовательских оболочек элементов для создания строго типизированных объектов домена на основе элементов Sitecore.

(Edit 9/13/2011: Custom Item Generator отлично подходит для этого. http://blog.velir.com/ index.php / 2010/10/19 / custom-item-generator / )

Удачи.

26
ответ дан 27 November 2019 в 07:17
поделиться

Я думаю, что реальный вопрос, который вы должны здесь задать: если у вас уже есть Sitecore - зачем вам накладные расходы и сложности, связанные с внедрением MVC?

Есть ли у вас какие-либо бизнес-требования помимо базового веб-сайта, которые потребовали бы MVC?

8
ответ дан 27 November 2019 в 07:17
поделиться

Я знаю, что разработчики Sitecore рассматривали ASP.NET MVC, но я не знаю, пробовали ли они это. Я не могу вспомнить ни одного проекта Sitecore, который, по моему мнению, выиграл бы от ASP.NET MVC. Механизм динамического ответа Sitecore, конвейеры, обработчики, подстановочные знаки и другие функции, похоже, предоставляют надмножество того, что вы можете сделать с помощью MVC. Похожая история с главными страницами ASP.NET - вы можете использовать их с Sitecore, но детали макета Sitecore лучше.

Я не против ASP.NET MVC с Sitecore или без него, но Sitecore, похоже, предоставляет функции контроллера. (на самом деле ASP.NET - это контроллер, а Sitecore просто подключается), ваша информационная архитектура - это модель, а ваши компоненты представления - это представления.

4
ответ дан 27 November 2019 в 07:17
поделиться

As luck would have it, I'm currently working on two large projects using both technologies respectively. And while I'm big fan of both, I can't see any benefits to merging the two.

As far as Sitecore goes, there is a learning curve, but quite honestly in my case, since I actually learned ASP.NET MVC "first" as opposed to Web Forms, the learning curve has also been slightly attributed to some of my inexperience with Web Forms. That said, there still is most definitely a learning curve involved with Sitecore, but there are plenty of training and reference materials floating around to help with that. Also, the web controls that come with Sitecore make it feel a lot less like building a straight Web Forms app. Plus there's the option for using XSLT as a rendering engine which comes in handy as well.

If this is just one project you're thinking about, I would say just stick with Sitecore as it's presentation system is quite well thought out. And as Mark said above, it would really complicate things quite a bit I and I'm also not sure what there is to gain from it even. Also echoing the sentiments of commodore73, building stuff in Sitecore seriously does feel like you're using MVC already, just using a different framework.

1
ответ дан 27 November 2019 в 07:17
поделиться

Второй комментарий Марка о требованиях. Стоит ли рисковать? Скорее всего, вы потеряете следующие функции Sitecore, если решите не использовать встроенные функции рендеринга:

  1. OMS
  2. Веб-формы для маркетологов
  3. Условное рендеринг
  4. Редактор страниц
  5. Дизайнер страниц

возможно даже больше.

6
ответ дан 27 November 2019 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: