2008-10-20 9 views
35

मोनोरेल में आप लेआउट प्रस्तुत करने के लिए केवल रद्द करें() को रद्द कर सकते हैं। एएसपी.नेट एमवीसी में, लेआउट को प्रभावित करने का एकमात्र तरीका लेआउट नाम को व्यू() विधि जैसे व्यू ("myview", "mylayout") में पास करना प्रतीत होता है; केवल ऐसा लगता है कि शून्य या खाली स्ट्रिंग गुजरना वह नहीं करता जो मैं चाहता हूं।एएसपी.नेट एमवीसी में लेआउट अक्षम करें?

मैंने एक खाली लेआउट तैयार किया जो सिर्फ सामग्री प्रदान करता था, लेकिन यह मूर्खतापूर्ण लगता है।

"लेआउट प्रस्तुत नहीं करें" का अर्थ बिल्कुल यही है। वेब फॉर्म में इंजन देखें वे लेआउट "मास्टर पेज" कहते हैं। मैं प्रस्तुत करना चाहता हूं मेरी क्रिया का दृश्य और मास्टर पेज से घिरा नहीं।

+0

यदि आप जो भी खोज रहे हैं उसे समझा नहीं सकते हैं तो आपको कोई अन्य जवाब नहीं मिलेंगे। "लेआउट प्रस्तुत न करें" से आपका क्या मतलब है? – Will

+0

सवाल मेरे लिए बहुत स्पष्ट है। –

+0

खाली लेआउट बनाने के लिए मूर्खतापूर्ण प्रतीत हो सकता है, लेकिन वेबफॉर्म इंजन को और जानें कि एएसपीनेट सामग्री अनुभागों को कैसे ऑर्डर करना है? मुझे लगता है कि वेबफॉर्म व्यूएंगिन के साथ यह एक समस्या है जो आपके पास है। – Min

उत्तर

1

ऐसा लगता है इस ASP.NET MVC के संस्करण के बारे में मैं पूछ रहा था में असंभव था।

+0

में किया गया है आपका Asp.Net संस्करण क्या था? –

+1

यह 7 साल पहले था। मुझे याद नहीं है, लेकिन शायद 2. –

0

आप एक कस्टम एक्शन रिसेट बना सकते हैं जो बहुत कुछ करता है। एक्शन रिसेट नियंत्रण क्लाइंट को प्रतिक्रिया के रूप में वापस भेजा जाता है। एक वर्ग बनाने के लिए यह छोटा होगा जो एक्शनरसल्ट को बढ़ाता है जो कुछ भी नहीं करता है।

+0

वह एक खाली परिणाम नहीं चाहता है, वह बिना किसी लेआउट के परिणाम चाहता है। – Matt

+1

वाह, यह सहायक था। और एक कस्टम ActionResult ऐसा करने में सक्षम नहीं होगा? – Will

0

यदि आप आउटपुट स्ट्रीम में कोई सामग्री प्रस्तुत नहीं करना चाहते हैं, तो ViewResult की बजाय अपनी क्रिया से एक खाली पुनर्प्राप्ति वापस करें।

+0

वह एक खाली परिणाम नहीं चाहता है, वह बिना किसी लेआउट के परिणाम चाहता है। – Matt

+0

आह, उस संपादन को बाद में जोड़ा गया था। –

+0

शायद इस उत्तर को हटाने के लायक है, EmptyResult –

0

क्या आपके दृश्य में मास्टरपेज होना आवश्यक है - वे वेबफॉर्म की एक वैकल्पिक विशेषता हैं? साथ ही, क्या आप अपने विचार के अंदर एचटीएमएल प्रस्तुत कर रहे हैं?

एएसपीएक्स पृष्ठ प्रस्तुत करना समझ में नहीं आता है जो मास्टरपेज के बिना मास्टरपेज के बिना दिमाग में लिखा गया था, क्योंकि आपकी सामग्री नियंत्रण सही क्रम में आवश्यक नहीं है।

+0

के बारे में टिप्पणी के रूप में जोड़ने के लायक हो सकता है आप रनटाइम पर मास्टरपेज असाइन करके विचारों का पुन: उपयोग कर सकते हैं। ओपी क्या पूछ रहा है यह है कि इसके मास्टरपेज को प्रस्तुत किए बिना वास्तविक दृश्य को कैसे प्रस्तुत किया जाए, संभावित रूप से एएसपीएक्स में दिए गए क्रम में "सामग्री" तत्वों को प्रस्तुत करना। –

+0

क्षमा करें, हाँ, मेरी गलती। –

4

सामान्य दृश्य का उपयोग करने के बजाय, आंशिक दृश्य बनाएं। इनका उपयोग तब किया जा सकता है, जो CancelLayout() की तरह बहुत अधिक कार्य करता है - या आप उन्हें एक ऐसे दृश्य में शामिल कर सकते हैं जो मास्टर पेज का संदर्भ देता है, इस मामले में यह पूर्ण लेआउट होगा। यदि आप AJAX अनुरोध के जवाब में आंशिक HTML खंड वापस भेजना चाहते हैं तो वे भी उपयोगी होते हैं।

65

MVC 3 में, आप के साथ मास्टर लेआउट कोड निकाल सकते हैं:

@{ 
    Layout = "";  
    } 
+0

इस विचार में है? क्या नियंत्रक से ऐसा करने का कोई तरीका नहीं है? ऐसा नहीं है कि मैं और अधिक ध्यान रखता हूं, बस मनोरंजक :) –

+1

एमवीसी 5 –

+0

@AaronJensen में भी काम करता है यह _ViewStart.cshtml – Oscar

45

दृश्य की शुरुआत में इस जोड़ें:

@{ 
    Layout = null; 
} 

आप शैली पत्रक चाहते हैं रहने के लिए, आप उस दृश्य में इसे करने के लिए संदर्भ जोड़ने की आवश्यकता होगी।

+0

यह रेजर व्यू में काम करता है, लेकिन नियंत्रक में नहीं, जैसा कि हारून ने मूल रूप से पूछा था। –

+0

रेज़र व्यू में एमवीसी 5 में काम करता है। –

6

सभी पृष्ठों के लिए इसे निष्क्रिय करने के लिए, _ViewStart.cshtml संपादित (रूट में, 'दृश्य' फ़ोल्डर के अंतर्गत), और सुनिश्चित करें वह निम्न शामिल हैं:

@{ 
    Layout = null; 
} 

और किसी भी विशिष्ट दृश्य के लिए टेम्पलेट को सक्षम करने के लिए, निम्नलिखित में जोड़ा जा सकता है।उस दृश्य के लिए cshtml फ़ाइल, को टेम्पलेट सक्षम:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
+1

इससे मुझे एक विशिष्ट साइडबार लेआउट को अक्षम करने में मदद मिली लेकिन मेरे हेडर/फ़ूटर के लिए समग्र लेआउट बनाए रखें –

2

किसी भी "" या null को masterPage पैरामीटर सेट करने की कोशिश कर भाग्य होने और एक View लौटने (जैसे मैंने नहीं किया)?

फिर इस कोशिश करते हैं और बजाय PartialView का उपयोग करें:

public ActionResult Article(string id) 
    { 
     return PartialView("~/Areas/Store/Views/CustomerService/" + id); 
    } 

मैं यह करने के जे एस से एक दृश्य एसिंक्रोनस रूप से की सामग्री को लोड करने के लिए की जरूरत है।

0

मैं सही जवाब में देखते हैं यह कहते हैं, "ऐसा लगता है इस ASP.NET MVC के संस्करण में असंभव था" कि

कौन सा संस्करण का उपयोग कर रहे हैं? क्योंकि मैं समाधान पाया

तो आपकी समस्या का (मैं एक ही मुद्दा था), पेज में लेआउट अक्षम करने के लिए, आप का उपयोग करना चाहिए:

@{ 
    Layout = null; 
} 

और, सुझाव के रूप में here, इस समस्या का समाधान कर सकता है आपके :

public ActionResult Index() 
{ 
    SampleModel model = new SampleModel(); 
    //Any Logic 
    return View("Index", "_WebmasterLayout", model); 
} 
संबंधित मुद्दे