c# - 从 asp.net 按钮单击以编程方式打开 sitecore 媒体库

标签 c# asp.net sitecore

我一直在尝试弄清楚是否可以通过单击服务器端按钮从 ASP.NET 代码隐藏以编程方式打开 Sitecore 媒体库浏览器。通过搜索网络,我找到了an example which explained how to open a media library browser。从 Sitecore 缩略图点击。我在 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);   
}

最佳答案

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

一个。创建配置文件“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>

在我的 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>

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

public override void Execute(CommandContext context) {

        Item item = context.Items.Length == 0 ? Context.Item : context.Items[0];
        contextItem = item;

        var parameters = new NameValueCollection();

        wizardPipeline = Context.ClientPage.Start(this, "Run", parameters);
    }

protected virtual 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 );     
        }
    }

关于c# - 从 asp.net 按钮单击以编程方式打开 sitecore 媒体库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154475/

相关文章:

sitecore - 如何删除 Sitecore 8.1 中重复的页面事件?

javascript - 使用 Ajax 从 C# 检索二进制数据

C#:使用 System.Speech 命名空间将 WAV 文件转录为文本(语音到文本)

c# - 链接按钮还是超链接?

c# - 从 .Net 中的 SAS 数据源读取数据

c# - 您是否需要 "unwire"ASP.NET webforms 中的事件处理程序

templates - 无法从 sitecore 中删除模板。出现错误 "The template is used by at least one item"?

c# - 获取从 C# 代码到 javascript 的响应

c# - 已知的 "filler"单词列表;如何使用 C# 提取好的关键字?

sitecore - Sitecore 是否有内置的电子邮件引擎?