【问题标题】:Open sitecore media library programmatically from asp.net button click从 asp.net 按钮单击以编程方式打开 sitecore 媒体库
【发布时间】:2012-02-06 00:39:13
【问题描述】:

我一直试图弄清楚是否可以通过单击服务器端按钮以编程方式从 ASP.NET 代码隐藏打开 Sitecore 媒体库浏览器。通过搜索网络,我通过点击 Sitecore 缩略图找到了an example which explained how to open a media library browser。我在 ASP.NET 服务器端按钮单击上尝试了这种方法,但它在object reference not set to an instance of an object 失败时不起作用。

如果您知道如何通过服务器端按钮单击在模式对话框中打开 Sitecore 媒体浏览器,谁能帮助我?

我的代码:

protected void btnShowMediaPopup_Click(object sender, EventArgs e)
{
    Database masterDb = Factory.GetDatabase("master");
    UrlString url = new UrlString(UIUtil.GetUri("control:Sitecore.Shell.Applications.Media.MediaBrowser"));

    Item folderItem = masterDb.GetItem("/sitecore/media library/Images");
    url["ro"] = folderItem.Uri.ToString();

    SheerResponse.ShowModalDialog(url.ToString(), true);   
}

【问题讨论】:

    标签: c# asp.net sitecore


    【解决方案1】:

    我找到了解决方案。步骤如下:

    一个。创建配置文件“MediaBrowser.config”并添加到文件夹 App_Config/Include(下面的配置 xml):

    <configuration xmlns:patch= "http://www.sitecore.net/xmlconfig/">
      <sitecore>
          <commands>
              <command name="example:MediaBrowser" type="SitecoreTraining.HelperClasses.MediaBrowser,SitecoreTraining" />
          </commands>
      </sitecore>
    </configuration>
    

    b.在我的 ascx 控件标记中添加以下内容以打开媒体浏览器:

    <A class="scChromeCommand" title="Open Media Browser" onclick="javascript:Sitecore.PageModes.ChromeManager.postRequest('example:MediaBrowser(id=<%# Sitecore.Context.Item.ID.ToString() %>)',null,false)" href="#"><IMG alt="Open Media Browser" src="http://localhost:2438/temp/IconCache/applications/16x16/photo_scenery.png" width="16" height="16" /></A>
    

    c。创建了一个 MediaBrowser 类,该类继承了 sitecore Command 类,使用了以下主要方法:

    公共覆盖无效执行(CommandContext上下文) {

            Item item = context.Items.Length == 0 ? Context.Item : context.Items[0];
            contextItem = item;
    
            var parameters = new NameValueCollection();
    
            wizardPipeline = Context.ClientPage.Start(this, "Run", parameters);
        }
    

    受保护的虚拟 void Run(ClientPipelineArgs args) {

            Database  masterDb = Factory .GetDatabase("master");      
            if  (args.IsPostBack)     
            {         
                var itemID = args.Result;   
            }     
            else      
            {         
                UrlString  url = new  UrlString (UIUtil .GetUri("control:Sitecore.Shell.Applications.Media.MediaBrowser" ));  
    
                Item  folderItem = masterDb.GetItem("/sitecore/media library/Images" );         
                url["ro" ] = folderItem.Uri.ToString();                  
                SheerResponse.ShowModalDialog(url.ToString(), true );         
                args.WaitForPostBack(true );     
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 2014-11-23
      • 2021-12-19
      • 2017-06-17
      • 2013-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多