बाल टेम्प्लेट को प्रस्तुत करने का उपयुक्त तरीका क्या है?
और क्या अंतर है? दोनों मेरे लिए काम करने लगते हैं।
और @Html.RenderPartial()
अब काम क्यों नहीं करता है ?
जवाबों:
Html.Partial("MyView")
"MyView" दृश्य को रेंडर करने के लिए a MvcHtmlString
। यह देखने के लिए मानक नियमों का पालन करता है (यानी वर्तमान निर्देशिका की जांच करें, फिर Shared
निर्देशिका की जांच करें )।
Html.RenderPartial("MyView")
के रूप में ही करता है Html.Partial()
, सिवाय इसके कि यह प्रतिक्रिया स्ट्रीम में सीधे अपना आउटपुट लिखता है। यह अधिक कुशल है, क्योंकि दृश्य सामग्री स्मृति में बफ़र्ड नहीं है। हालाँकि, क्योंकि विधि किसी भी आउटपुट को वापस @Html.RenderPartial("MyView")
नहीं करती है , काम नहीं करेगी। आप इसके बजाय किसी कोड ब्लॉक में कॉल रैप करने के लिए है: @{Html.RenderPartial("MyView");}
।
RenderPage("MyView.cshtml")
सीधे निर्दिष्ट स्ट्रीम की तरह, निर्दिष्ट दृश्य को देखें (पथ और फ़ाइल नाम के बजाय फ़ाइल नाम से पहचाना गया) Html.RenderPartial()
। आप इसे किसी भी मॉडल को दूसरे पैरामीटर के रूप में शामिल करके दृश्य को पसंद कर सकते हैं
RenderPage("MyView.cshtml", MyModel)
@Html.Partial("MyView")
बनाम@{Html.RenderPartial("MyView");}
RenderPage
? मैं एक विशिष्ट क्वेरी पैरामीटर निर्दिष्ट करके एक अलग पृष्ठ को घोंसला बनाना चाहता हूं, जो बदले में उस पृष्ठ के डेटा को फ़िल्टर करेगा, और इसके अलावा, अपने स्वयं के लेआउट को हटा दें।
मैं पसंद करता हूं
@RenderPage("_LayoutHeader.cshtml")
ऊपर
@{ Html.RenderPartial("_LayoutHeader"); }
केवल इसलिए कि वाक्य रचना आसान है और यह अधिक पठनीय है। इसके अलावा वहाँ कोई अंतर नहीं लगता है कार्यक्षमता बुद्धिमान।
संपादित करें: RenderPartial का एक फायदा यह है कि आपको संपूर्ण पथ या फ़ाइल एक्सटेंशन को निर्दिष्ट करने की आवश्यकता नहीं है, यह सामान्य स्थानों को स्वचालित रूप से खोजेगा।
RenderPage
वाक्य रचना के कारण सहमत हूं ।
द रेंडरपार्टियल विधि अधिकांश अन्य सहायक तरीकों की तरह वापस नहीं करता है HTML मार्कअप। इसके बजाय, यह सीधे प्रतिक्रिया स्ट्रीम में सामग्री लिखता है, यही कारण है कि हमें अर्धविराम का उपयोग करते हुए इसे सी # की पूरी लाइन की तरह कहना चाहिए।
आंशिक रूप से प्रदान किए गए HTML को बफर करने की तुलना में यह थोड़ा अधिक कुशल है, क्योंकि इसे वैसे भी प्रतिक्रिया स्ट्रीम में लिखा जाएगा। यदि आप एक अधिक सुसंगत वाक्यविन्यास पसंद करते हैं, तो आप Html.Partial पद्धति का उपयोग कर सकते हैं , जो बिल्कुल RenderPartial पद्धति के समान है , लेकिन एक HTML टुकड़ा लौटाता है और इसे @ Html.Partial ("उत्पाद", p) के रूप में उपयोग किया जा सकता है।