2010-05-06 12 views
5

मैं साइटमैप का उपयोग कर मेनू नियंत्रण में दस्तावेज़ खोलने की उम्मीद कर रहा था। मैं साइटमैप में निम्न कोड का उपयोग कर रहा हूं लेकिन एक त्रुटि प्राप्त करें। मैं मेनू आइटम पर क्लिक करने में सक्षम होना चाहता हूं, इसे एक नई विंडो में नमूना दस्तावेज़ खोलें, लेकिन मूल पृष्ठ को किसी नए स्थान पर नेविगेट नहीं करना है (अनिवार्य रूप से मुख्य पृष्ठ पर कुछ भी करने के लिए नहीं।)किसी साइट मानचित्र से एक अलग विंडो में दस्तावेज़ कैसे खोलें

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

कोई विचार? क्या कोई जावास्क्रिप्ट है जिसका उपयोग मैं कर सकता हूं जिसके लिए मुझे प्रत्येक पृष्ठ पर फ़ंक्शन पंजीकृत करने की आवश्यकता नहीं है?

उत्तर

8

मैं निम्नलिखित का उपयोग कर समाप्त हो गया?

<siteMapNode url="Sample.doc" target="_blank" title="FAQs" description="FAQs" /> 
1
javascript:widow.open 

क्या आप वाकई window.open का मतलब नहीं है?
मुझे नहीं लगता कि आपकी स्क्रिप्ट विधवाओं से काफी संबंधित है;)

+0

हां! मेरा मतलब खिड़की था। ओपन। मैंने अपना प्रश्न अपडेट कर लिया है (यह मेरा मुद्दा नहीं था।) मैं इतनी सारी चीजों की कोशिश कर रहा हूं जो मुझे बेकार हो गया ... धन्यवाद। – Sean

1

आपको यह पता लगाना होगा कि कौन सा नियंत्रण साइटमैप फ़ाइल का उपभोग कर रहा है और उसके बाद उस नियंत्रण से उत्पन्न घटना को पकड़ें।

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

क्यों न सिर्फ लक्ष्य विशेषता का उपयोग करें:

+0

लक्ष्य विशेषता मेनू नियंत्रण – Tevin

+0

द्वारा उत्पन्न लिंक टैग पर लागू नहीं होती है, इसे वोट दिया क्योंकि मैं वही चीज़ सोच रहा था। इसलिए सवाल केवल उपयोगी है, भले ही समाधान को छूट देने के लिए। –

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

नोट:: मैं तो जैसे पीछे कोड में यह करना ही था मैं मेनू के प्रीरेंडर इस जोड़ा क्योंकि मैं सिर्फ अन्य MenuItems के अंत कि स्रोत पृष्ठ में थे में जोड़ने के लिए चाहता था और किया target="_blank" की आवश्यकता नहीं है।