2012-05-24 11 views
7

मुझे पता है कि कुछ प्रश्न हैं जिनका उत्तर दिया गया है लेकिन मुझे कुछ विशिष्ट नहीं मिला मामला।निम्नलिखित खंडों को परिभाषित किया गया है लेकिन लेआउट पेज के लिए प्रस्तुत नहीं किया गया है "~/Views/Shared/_Layout.cshtml"

मैं एमवीसी 4 की मोबाइल क्षमताओं का उपयोग कर रहा हूं। इसलिए मैंने _layout.mobile.cshtml और संबंधित दृश्य बनाए।

उपरोक्त त्रुटि तब होती है जब मैं मोबाइल डिवाइस के साथ जाता हूं। जैसा कि आप देख सकते हैं, यह _layout.mobile.cshtml के बजाय नियमित _layout.cshtml प्रदर्शित करने का प्रयास कर रहा है। तो मुझे लगता है कि यह दृश्य को प्रदर्शित करने का प्रयास कर रहा है (इंडेक्स.मोबाइल.cshtm कहें) जिसमें प्रश्न में अनुभाग नहीं है। असल में यह मोबाइल विचारों के साथ नियमित लेआउट मिश्रण कर रहा है।

यह हर समय नहीं होता है। यदि मैं पूल रीसायकल करता हूं तो यह थोड़ी देर के लिए फिर से काम करता है और फिर अचानक यह त्रुटि होने के लिए वापस चला जाता है और यह तब तक जारी रहेगा जब तक कि मैं फिर से पूल रीसायकल नहीं करता।

क्या किसी ने इस समस्या को देखा है इससे पहले कि कुछ प्रकाश डाला जा सके?

धन्यवाद जॉन

+0

से सामना करना पड़ता है आप @RenderSection ("sectionName", आवश्यक: false) का उपयोग करते हैं? – archil

+0

हाँ मैं करता हूं। यह वास्तव में एक डिफ़ॉल्ट लेआउट है जिसे बनाया गया है जब आप एक नया एमवीसी 4 प्रोजेक्ट शुरू करते हैं। @ रेंडरसेक्शन ("फीचर्ड", आवश्यक: झूठा)। बेशक, मुझे लगता है कि समस्या तब शुरू होती है जब यह गलत लेआउट का उपयोग करने का प्रयास करता है। –

+0

तो मैं थोड़ा और जानकारी।मैं गलत था, ऐसा नहीं है कि यह मोबाइल दृश्य के साथ "डेस्कटॉप" लेआउट प्रस्तुत कर रहा है। यह दूसरी तरह से है। यह "डेस्कटॉप" विचारों के साथ मोबाइल लेआउट प्रस्तुत कर रहा है। –

उत्तर

3

_ViewStart.cshtml में दृश्य फ़ोल्डर के अंतर्गत उपलब्ध है, अपने कस्टम लेआउट के लिए लेआउट मान बदलें। मैं इस मदद मिल सकती है .. उदाहरण

@{ 
Layout = "~/Views/Shared/_layout.mobile.cshtml"; 
} 

के लिए

मामले में (सुनिश्चित करें कि आप आंशिक दृश्य के बजाय देखें लौट रहे हैं बनाओ) किसी खास पृष्ठ आपको स्पष्ट रूप से परिभाषित कर सकते हैं के लिए लेआउट बदलना चाहते हैं लगता है यह पृष्ठ के शीर्ष पर एक पृष्ठ निर्देश के रूप में।

3

index.cshtml में मूल लेआउट फ़ाइल "_LayoutHome.cshtml" में परिभाषित एक अनुभाग है जिसे नए बूटस्ट्रैप लेआउट में परिभाषित नहीं किया गया है।

विशेष रूप से: @RenderSection("featured", required: false)

तो समाधान या तो (मूल लेआउट में इसके लिए देखो और पेस्ट करें) नए लेआउट के लिए इस अनुभाग को जोड़ने या बस index.cshtml से हटाने के लिए है।

0

ऐसा करने का एक और तरीका है अपने _ViewStart.cshtml पृष्ठ में एक सशर्त ब्लॉक का उपयोग करना। उदाहरण के लिए, आपके पास डिवाइस नियमित उपयोगकर्ता के आधार पर दो लेआउट हो सकते हैं। उपकरण/ब्राउज़र प्रकार बिट के पढ़ने के लिए छद्म कोड का उपयोग करना, यह कुछ इस तरह दिखेगा:

@{ 
     if(userIsMobile) 
     { 
      Layout = "~/Views/Shared/_MobileLayout.cshtml"; 
     } 
     else 
     { 
      Layout = "~/Views/Shared/_Layout.cshtml"; 
     } 
} 

मैं इस का इस्तेमाल किया है प्रदर्शित करने या के रूप में उपयोगकर्ता के विभिन्न वर्गों के लिए आवश्यक वर्गों या मेनू आइटम को छिपाने के लिए; यह डिवाइस-विशिष्ट लेआउट के लिए भी काम करना चाहिए।

जॉय मॉर्गन

2

मैं था भी एक ही समस्या मैं

@section featured { 

हटाया देखें

संबंधित मुद्दे