2012-02-06 4 views
4

サーバーサイドのボタンをクリックすると、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で失敗しませんでした。asp.netボタンからプログラムでsitecoreメディアライブラリを開く

サーバー側のボタンをクリックすると、モーダルダイアログで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); 
} 

答えて

1

私は解決策を見つけました。ステップは次のとおりです。

a。設定ファイル "MediaBrowser.config" を作成し、フォルダに追加App_Config /含める(以下、構成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。

公共オーバーライド無効実行(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); 
    } 

保護された仮想のボイドラン(ClientPipelineArgsの引数) {:使用以下の主な方法とサイトコアのCommandクラスを継承し続けてMediaBrowserクラスを作成しました

 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);  
     } 
    } 
関連する問題