2012-10-15 7 views
10

मैं नोगेट, v0.12.1.0 पर वर्तमान निर्माण का उपयोग करके, नैन्सी के साथ पकड़ने जा रहा हूं और मैं रेजर व्यू इंजन का उपयोग करना चाहता हूं।क्या नैन्सी है। ViewEngines.Razor v0.12.1.0 समर्थन लेआउट दृश्य amd _ViewStart?

क्या रेज़र व्यू इंजन का v0.12.1.0 लेआउट और _ViewStart का समर्थन करता है?

उदा।

मैं ~/Views/_ViewStart.cshtml

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

में निम्नलिखित है और ~/Views/Shared/_Layout.cshtml

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<dynamic> 
<!DOCTYPE html> 
<html> 
<head> 
    @RenderSection("head", false) 
</head> 
<body> 
    @RenderBody() 
</body> 
</html> 

में निम्नलिखित लेकिन सब जब मैं होमपेज पर मारा मैं हो रही है मैं निर्धारित किया है एक दृश्य की सामग्री है ~/Views/Home/Index.cshtml

<h1>Home</h1> 

मेरा होम मॉड्यूल पसंद करता है ई यह:

public class Home : NancyModule 
{ 
    public Home() 
     : base("") 
    { 
     Get["/"] = _ => View["Index"]; 
    } 
} 

उत्तर

8

_ViewStart कुछ हम (वर्तमान में) समर्थन नहीं है, लेकिन निश्चित रूप से एक Layout पर-व्यू आधार

+8

_ViewStart अब समर्थित है – TheCodeJunkie

+0

हलिलुय: डी: डी – nathanchere

2

जो मैं बता सकता हूं, सरल जवाब नहीं होगा।

मेरे द्वारा किए गए सीमित शोध से अधिक विस्तृत उत्तर।

एमवीसी 2 में, माइक्रोसॉफ्ट ने एक सिस्टम.Web.Razor dll जोड़ा जिसमें रेज़र पार्सर और कोड जनरेटर शामिल था। _ViewStart सुविधा को एमवीसी 3 में जोड़ा गया था और उस संस्करण में, माइक्रोसॉफ्ट ने एक नया सिस्टम नहीं बनाया था। Web.Razor dll। इसके बजाय उन्होंने सिस्टम.बैब.एमवीसीआरज़र नामस्थान के तहत नई प्रणाली.Web.Mvc डीएल में नया पार्सर और कोड जनरेटर एम्बेड किया। मुझे यकीन नहीं है कि इस बदलाव के पीछे कारण, शायद तैनाती को सरल बनाना।

नैन्सी रेजर व्यूएंगिन मूल रेजर पार्सर और कोड जनरेटर का संदर्भ देता है और इसलिए एमवीसी 3 में रेजर की किसी भी नई कार्यक्षमता तक पहुंचने में सक्षम नहीं होगा। मैंने नैन्सीएफएक्स लोगों के साथ कोई चर्चा नहीं की है और ' गिटहब पर कोई त्वरित समस्या नहीं है या Google समूह में चर्चाएं हैं, इसलिए मुझे नहीं पता कि वे व्यूइंग को बदलने की योजना बना रहे हैं या नहीं।

29

नैन्सी के रूप में पर समर्थित है _ViewStart फ़ाइल अब समर्थित है v0.20।

एक टिप के रूप में, अपनी लेआउट फ़ाइल का संदर्भ देते समय, ~/ स्थान को स्थानांतरित न करें। बस निम्नलिखित है या आप शून्य संदर्भ अपवाद प्राप्त करेंगे।

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

इस स्वच्छ आदमी – misaxi

+0

इस जब एम्बेडेड संसाधनों के रूप में विचारों का उपयोग – Maciek

+1

उम्मीद है कि मैं सिर्फ यह नहीं देख रहा हूँ, काम करने के लिए प्रकट नहीं होता है, लेकिन यह वास्तव में डॉक्स में होना चाहिए नैन्सी के लिए! मैंने बिना किसी सुराग के कुछ घंटों तक संघर्ष किया, जब मेरी साइट पर तैनात किया गया था तो मेरे लेआउट पथ काम नहीं कर रहे थे। –

2

मैं उत्तर में जोड़ना चाहता था क्योंकि मैं इसे एक दिन निकालने की कोशिश कर रहा था:।

Nancy.RequestExecutionException: Oh noes! ---> System.NullReferenceException: Object reference not set to an instance of an object. 
    at Nancy.ViewEngines.DefaultViewCache.GetOrAdd[TCompiledView](ViewLocationResult viewLocationResult, Func`2 valueFactory) 
    at Nancy.ViewEngines.Razor.RazorViewEngine.GetOrCompileView(ViewLocationResult viewLocationResult, IRenderContext renderContext, Assembly referencingAssembly, Type passedModelType) 
    at System.Dynamic.UpdateDelegates.UpdateAndExecute5[T0,T1,T2,T3,T4,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) 
    at CallSite.Target(Closure , CallSite , RazorViewEngine , ViewLocationResult , IRenderContext , Assembly , Object) 
    at Nancy.ViewEngines.Razor.RazorViewEngine.GetViewInstance(ViewLocationResult viewLocationResult, IRenderContext renderContext, Assembly referencingAssembly, Object model) 
    at System.Dynamic.UpdateDelegates.UpdateAndExecute5[T0,T1,T2,T3,T4,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) 
    at Nancy.ViewEngines.Razor.RazorViewEngine.<>c__DisplayClass27.b__26(Stream stream) 
    at Nancy.Responses.MaterialisingResponse.PreExecute(NancyContext context) 

रिचर्ड बैंकों के जवाब देने के लिए इसी तरह के - नैन्सी अपने विचार/_ViewStart.cshtml फ़ाइल में डिफ़ॉल्ट लेआउट पथ का समाधान नहीं होता (यानी: ~/दृश्य/साझा/_Layout.cshtml)। ~/नैन्सी में दृश्य रिज़ॉल्वर में व्याख्या नहीं की गई है।

आप या तो ~/भाग को हटा सकते हैं, या डिफ़ॉल्ट लेआउट को टिप्पणी कर सकते हैं और अपने प्रत्येक दृश्य पर मैन्युअल रूप से एक लेआउट निर्दिष्ट कर सकते हैं। बाद में मैंने जो कारण किया वह इसलिए था क्योंकि नैन्सी अभी भी _Layout.cshtml निष्पादित करता है भले ही आपने अपने दृश्य में लेआउट को हटा दिया हो।

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