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

我一直试图弄清楚是否有可能在服务器端按钮点击的ASP.NET代码隐藏中以编程方式打开Sitecore媒体库浏览器。 通过搜索网络,我找到了一个例子,解释了如何从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):

        

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

 Open Media Browser 

C。 创建了一个MediaBrowser类,该类inheritance了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 ); } }