2010-05-06 9 views
5

Speravo di aprire un documento in un controllo di menu utilizzando una mappa del sito. Sto usando il seguente codice nella Sitemap ma ho un errore. Vorrei poter fare clic sulla voce di menu, aprire il documento di esempio in una nuova finestra, ma non fare in modo che la pagina originale passi a una nuova posizione (essenzialmente per non fare nulla sulla pagina principale.)Come aprire un documento in una finestra separata da una mappa del sito

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

Qualche idea? C'è qualche javascript che posso usare che non mi richiede di registrare una funzione su ogni pagina?

risposta

8

ho finito per usare il seguente:

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

Sei sicuro di non voler dire window.open?
Non penso che la tua sceneggiatura sia molto legata alle vedove;)

+0

Hah! Intendevo window.open. Ho aggiornato la mia domanda (non era il mio problema). Ho provato così tante cose che mi sono sciatto ... grazie. – Sean

1

Dovrai scoprire quale controllo sta consumando il file Sitemap e quindi catturare l'evento generato da quel controllo.

0

perché non utilizzare l'attributo target?

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

L'attributo di destinazione non viene applicato al tag di collegamento generato dal controllo menu – Tevin

+0

In su votato perché mi stavo chiedendo la stessa cosa. Quindi la domanda è utile anche se solo per lo sconto di una soluzione. –

3

Se si gestisce l'evento OnMenuItemDataBound sul controllo Menu ASP.NET, è possibile impostare l'attributo target sulla voce lì:

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" sulla pagina di origine è stato perso quando la pagina visualizzata per me. Ho dovuto farlo nel codice dietro in questo modo:

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); 
    } 
} 

Nota: ho aggiunto questo per PreRender del menu perché volevo solo aggiungere fino alla fine degli altri MenuItems che erano nella pagina di origine e ha fatto non è necessario target="_blank".

Problemi correlati