2010-05-06 5 views
5

Я надеялся открыть документ в элементе управления меню, используя карту сайта. Я использую следующий код в файле Sitemap, но получаю сообщение об ошибке. Я хотел бы иметь возможность щелкнуть по элементу меню, открыть ли образец документа в новом окне, но не направить исходную страницу на новое место (по существу ничего не делать на главной странице.)Как открыть документ в отдельном окне с карты сайта

<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

Hah! Я имел в виду window.open. Я обновил свой вопрос (это не было моей проблемой.) Я пробовал так много вещей, которые мне не нравились ... спасибо. – Sean

1

Вам нужно будет выяснить, какой элемент управления использует файл Sitemap, а затем поймать событие, сгенерированное из этого элемента управления.

0

Почему бы просто не использовать целевой атрибут?

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

Атрибут target не применяется к тегу ссылки, сгенерированному элементом управления меню – Tevin

+0

Вверх проголосовал за это, потому что мне было интересно то же самое. Таким образом, вопрос полезен, даже если только для дисконтирования решения. –

3

Если обрабатывать OnMenuItemDataBound события в элементе управления меню ASP.NET, вы можете установить целевой атрибут элемент там:

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 в Menu, потому что я просто хотел, чтобы добавить его к концу других MenuItems, которые были в исходной странице и сделал не нужно target="_blank".

Смежные вопросы