2010-05-06 73 views
5

我希望能够使用站点地图在菜单控件中打开文档。我在站点地图中使用以下代码,但出现错误。我希望能够点击菜单项,让它在新窗口中打开示例文档,但不能让原始页面导航到新的位置(实质上在主页上什么都不做)。如何从站点地图在单独的窗口中打开文档

<siteMapNode url="javascript:window.open('Sample.doc','SampleName'); return false" title="FAQs" description="FAQs" /> 

任何想法?有没有一些JavaScript我可以使用,不需要我在每个页面上注册一个功能?

回答

8

我最终使用下列内容:

<siteMapNode url="javascript:window.open('Sample.doc','SampleName'); void(0);" title="FAQs" description="FAQs" /> 
1
javascript:widow.open 

你确定你不是指window.open
我不认为你的脚本与寡妇有很大关系;)

+0

哈!我的意思是window.open。我已经更新了我的问题(这不是我的问题。)我一直在尝试很多我sl things不乐的事情......谢谢。 – Sean 2010-05-06 19:29:22

1

你需要找出哪个控件使用了sitemap文件,然后捕获该控件生成的事件。

0

为什么不直接使用对象的属性?

<siteMapNode url="Sample.doc" target="_blank" title="FAQs" description="FAQs" /> 
+0

目标属性不适用于由菜单控件生成的链接标记 – Tevin 2014-04-07 12:51:56

+0

Up投票,因为我想知道同样的事情。所以这个问题即使只是为了打折解决方案也是有用的。 – 2014-11-10 05:45:29

3

如果你处理的ASP.NET菜单控制OnMenuItemDataBound事件,你可以在那里的项目设置目标属性:源页面上

MyMenu.MenuItemDataBound += OnMenuItemDataBound 

private void OnMenuItemDataBound(object sender, MenuEventArgs e) 
{ 
    // Sets all menu items to open in new windows 
    e.Item.Target = "_blank"; 

    // Uses a 'target' attribute in the XML sitemap if set: 
    string targetAttributeValue = ((SiteMapNode)e.Item.DataItem)["target"]; 
    if (targetAttributeValue != null) { 
     e.Item.Target = targetAttributeValue; 
    } 
} 
0

target="_blank"时丢失的页面呈现为了我。我不得不这样做在后面的代码如下所示:

private void Menu1_PreRender(object sender, EventArgs e) 
{ 
    if (!IsPostBack) { 
     MenuItem FAQsItem = new MenuItem("FAQs"); 
     FAQsItem.NavigateUrl = "~/Sample.doc"; //You'll need to figure out your correct URL 
     FAQsItem.Target = "_blank"; 
     Menu1.Items.Add(FAQsItem); 
    } 
} 

注:我已将此添加到菜单的的PreRender因为我只是想将它添加到其他的MenuItems的那名在源页结束,做不需要target="_blank"

相关问题