2010-05-06 16 views
5

Bir site haritası kullanarak bir menü kontrolünde bir belge açmayı umuyordum. Site haritasındaki şu kodu kullanıyorum ancak bir hata alıyorum. Menü maddesini tıklayabilmek, örnek dokümanı yeni bir pencerede açabilmeyi, ancak orijinal sayfanın yeni bir yere gitmemesini (ana sayfada hiçbir şey yapmamanızı) istiyorum.Site haritasından ayrı bir pencerede belge açma

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

Herhangi bir fikrin var mı? Kullanabileceğim bir javascript var mı? Bu, her sayfada bir işlev kaydettirmemi gerektirmiyor mu?

cevap

8

aşağıdaki kullanarak sona erdi? sayfa render zaman kaybedildi

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; 
    } 
} 
1
javascript:widow.open 

window.open kastettiğinizden emin misiniz?
Komut dosyanızın dullarla ilgili olduğunu sanmıyorum;)

+0

Hah! Window.open demek istedim. Sorumu güncelledim (bu benim sorunum değildi.) Çok fazla şey denedim, özensizim ... teşekkürler. – Sean

1

Site haritasının hangi denetimi kullandığını bulup daha sonra bu denetimden oluşturulan olayı yakalamanız gerekir.

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

Neden sadece hedef özniteliği:

+0

Hedef özellik, menü kontrolü – Tevin

+0

tarafından oluşturulan bağlantı etiketine uygulanmıyor. Buna oy verdim çünkü aynı şeyi merak ediyordum. Bu yüzden soru sadece bir çözüm için indirim olsa bile yararlıdır. –

3

, orada öğe üzerinde hedef niteliğini ayarlayabilirsiniz benim için.

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

Not: Öyle gibi kodda yapmak zorunda kaldım ben sadece kaynak sayfa vardı diğer menuitems sonuna eklemek istedim ve yaptım çünkü Menünün PreRender bu katma target="_blank"'a gerek yok.

0

target="_blank" kaynak sayfadaki: Eğer ASP.NET Menü kumanda üzerindeki OnMenuItemDataBound olayı işlemek durumunda

<siteMapNode url="Sample.doc" target="_blank" title="FAQs" description="FAQs" /> 
İlgili konular