我一直在尝试弄清楚是否可以通过单击服务器端按钮从 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/