Запуск редактора контента из кода

У меня есть приложение, которое создает новый элемент в Sitecore, а затем открывает редактор контента для этого элемента, оно загружается нормально, но всякий раз, когда я пытаюсь открыть редактор html, я получаю «NullReferenceException». Это происходит только тогда, когда я запускаю приложение этим методом.

Исходный код:

[Serializable]
public class PushToCMS : Command
{
    public override void Execute(CommandContext context)
    {
        //Context.ClientPage.Start(this, "Action_PushToCMS");

        Database dbCore = Sitecore.Configuration.Factory.GetDatabase("core");
        Item contentEditor = dbCore.GetItem(new ID("{7EADA46B-11E2-4EC1-8C44-BE75784FF105}"));

        Database dbMaster = Sitecore.Configuration.Factory.GetDatabase("master");
        DatabaseEngines engine = new DatabaseEngines(dbMaster);

        Item parentItem = dbMaster.GetItem("/sitecore/content/Home/Events/Parent/");

        // Load existing related item if it exists
        Event evt = new Event(new Guid(HttpContext.Current.Items["id"].ToString()));
        Item item = dbMaster.SelectSingleItem("/sitecore/content/Home/Events/Parent/Item");

        if (item == null)
            item = CreateNewEvent(engine.DataEngine, parentItem, evt);

        Sitecore.Text.UrlString parameters = new Sitecore.Text.UrlString();
        parameters.Add("id", item.ID.ToString());
        parameters.Add("fo", item.ID.ToString());
        Sitecore.Shell.Framework.Windows.RunApplication(contentEditor, contentEditor.Appearance.Icon, contentEditor.DisplayName, parameters.ToString());
    }

Единственная разница, которую я могу сказать в загрузке двух методов, - это URL-адрес редактора html, однако я не знаю, где это определяется или как я могу это контролировать.

Запустил обычным методом: http://xxxx/sitecore/shell/default.aspx?xmlcontrol=RichTextEditor&da=core&id=%7bDD4372AC-5D37-4C9E-BBFA-C4E3E2A27722%7d&ed=F27055570&vs&la=en&fld=%7b60D10DBB-7CD5-4341-A960-C7AB10347A2C%7d&so&di=0&hdl=H27055699&us=%7b83D34C8A-4CC4-4CD9-A209-600D51B26AAE%7d&mo

Запущено через RunApplication: http://xxxx/layouts/xmlcontrol.aspx?xmlcontrol=RichTextEditor&da=core&id=%7bDD4372AC-5D37-4C9E-BBFA-C4E3E2A27722%7d&ed=F27055196&vs&la=en&fld=%7b60D10DBB-7CD5-4341-A960-C7AB10347A2C%7d&so&di=0&hdl=H27055325&us=%7b83D34C8A-4CC4-4CD9-A209-600D51B26AAE%7d&mo

Любая помощь по этому вопросу будет принята с благодарностью.


person Community    schedule 02.10.2008    source источник


Ответы (1)


Фил,

Если еще не слишком поздно для ответа... :) Возможно, вы запускаете этот код без разрешений на чтение основной базы данных. В этом случае, когда вы пытаетесь вызвать contentEditor. вы получите NullReference. Я бы порекомендовал вам использовать другой формат запуска приложения — используйте другой метод:

Sitecore.Shell.Framework.Windows.RunApplication("Content Editor", parameters.ToString());

Если это не поможет, прикрепите трассировку стека полученного исключения.

Надеюсь это поможет.

person Yan Sklyarenko    schedule 16.02.2010