रेज़र: @ Html.Partial () बनाम @ रेंडरपेज ()


93

बाल टेम्प्लेट को प्रस्तुत करने का उपयुक्त तरीका क्या है?

और क्या अंतर है? दोनों मेरे लिए काम करने लगते हैं।

और @Html.RenderPartial()अब काम क्यों नहीं करता है ?

जवाबों:


127
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)

8
क्या @ {Html.RenderPartial ("MyView");} ओवर @ Html.RenderPartial ("MyView") की दक्षता हासिल करने पर कोई मैट्रिक्स है?
फॉस्ट

@ क्या आपको आंशिक vd RenderPartial से मतलब था?
काछो सांता

1
@ काचो: हाँ, मेरी टिप्पणी को @Html.Partial("MyView")बनाम@{Html.RenderPartial("MyView");}
फॉस्ट

2
छोटा सुधार: रेंडरपेज में दूसरा पैरामीटर () मॉडल नहीं है, यह एक परम [] वस्तु है जो पेजटा संपत्ति के माध्यम से एक्सेस किया जाता है। यह ऊपर के रूप में काम करता प्रतीत होता है क्योंकि डिफ़ॉल्ट रूप से "माता-पिता" पृष्ठ से मॉडल को "बच्चे" के माध्यम से पारित किया जाता है। msdn.microsoft.com/en-us/library/…
जॉन

क्या कॉल करने से इसके मॉडल के साथ एक पूरा पृष्ठ घोंसला बनाने का एक तरीका है RenderPage? मैं एक विशिष्ट क्वेरी पैरामीटर निर्दिष्ट करके एक अलग पृष्ठ को घोंसला बनाना चाहता हूं, जो बदले में उस पृष्ठ के डेटा को फ़िल्टर करेगा, और इसके अलावा, अपने स्वयं के लेआउट को हटा दें।
शिमी वेइटहैंडलर

17

मैं पसंद करता हूं

@RenderPage("_LayoutHeader.cshtml")

ऊपर

@{ Html.RenderPartial("_LayoutHeader"); }

केवल इसलिए कि वाक्य रचना आसान है और यह अधिक पठनीय है। इसके अलावा वहाँ कोई अंतर नहीं लगता है कार्यक्षमता बुद्धिमान।

संपादित करें: RenderPartial का एक फायदा यह है कि आपको संपूर्ण पथ या फ़ाइल एक्सटेंशन को निर्दिष्ट करने की आवश्यकता नहीं है, यह सामान्य स्थानों को स्वचालित रूप से खोजेगा।


1
मुझे लगता है कि यह एक टिप्पणी होना चाहिए जवाब नहीं। इसके अलावा मैं RenderPageवाक्य रचना के कारण सहमत हूं ।
इमान महमूदीनसाब

6

रेंडरपार्टियल विधि अधिकांश अन्य सहायक तरीकों की तरह वापस नहीं करता है HTML मार्कअप। इसके बजाय, यह सीधे प्रतिक्रिया स्ट्रीम में सामग्री लिखता है, यही कारण है कि हमें अर्धविराम का उपयोग करते हुए इसे सी # की पूरी लाइन की तरह कहना चाहिए।

आंशिक रूप से प्रदान किए गए HTML को बफर करने की तुलना में यह थोड़ा अधिक कुशल है, क्योंकि इसे वैसे भी प्रतिक्रिया स्ट्रीम में लिखा जाएगा। यदि आप एक अधिक सुसंगत वाक्यविन्यास पसंद करते हैं, तो आप Html.Partial पद्धति का उपयोग कर सकते हैं , जो बिल्कुल RenderPartial पद्धति के समान है , लेकिन एक HTML टुकड़ा लौटाता है और इसे @ Html.Partial ("उत्पाद", p) के रूप में उपयोग किया जा सकता है।


2

हम आंशिक विचारों का उपयोग करके मॉडल भी पास कर सकते हैं। @ Html.Partial ( "MyView", "MyModel");


0
@RenderPages() 

उपरोक्त ASP.NET MVC में काम नहीं करता है। यह केवल WebPages में काम करता है।

@Html.Partial("_Footer")

आपको ASP.NET MVC में उपरोक्त का उपयोग करना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.