2010-04-28 11 views
129

प्रकार यह वापस आती है और तथ्य यह है कि आप इसे दूसरे तरीके से जाहिर हैएचटीएमएल के बीच अंतर (यदि कोई है) क्या है (देखें, मॉडल) और एचटीएमएल। एमवीसी 2 में रेंडरपार्टियल (देखें, मॉडल)?

<% Html.RenderPartial(...); %> 
<%= Html.Partial(...) %> 

तो वे अलग हैं कहते हैं, तुम क्यों एक दूसरे के बजाए एक कहेंगे अलावा?
परिभाषाएँ:

// Type: System.Web.Mvc.Html.RenderPartialExtensions 
// Assembly: System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
// Assembly location: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll 

using System.Web.Mvc; 

namespace System.Web.Mvc.Html 
{ 
    public static class RenderPartialExtensions 
    { 
     public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName); 
     public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, ViewDataDictionary viewData); 
     public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, object model); 

     public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, object model, 
            ViewDataDictionary viewData); 
    } 
} 

// Type: System.Web.Mvc.Html.PartialExtensions 
// Assembly: System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
// Assembly location: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll 

using System.Web.Mvc; 

namespace System.Web.Mvc.Html 
{ 
    public static class PartialExtensions 
    { 
     public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName); 

     public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, 
             ViewDataDictionary viewData); 

     public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model); 

     public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model, 
             ViewDataDictionary viewData); 
    } 
} 

उत्तर

156

फर्क सिर्फ इतना है कि Partial रिटर्न एक MvcHtmlString, और <%= %> अंदर बुलाया जाना चाहिए, RenderPartial रिटर्न void जबकि और देखने के लिए सीधे renders है।

यदि आप source code देखते हैं, तो आप देखेंगे कि वे दोनों एक ही आंतरिक विधि को कॉल करते हैं, जिसके लिए स्ट्रिंगवाइटर को प्रस्तुत करना है।

यदि आप पेज पर लिखने के बजाय जेनरेट किए गए HTML को देखना, सहेजना या छेड़छाड़ करना चाहते हैं तो आप Partial पर कॉल करेंगे।

+0

ठीक है, तो कोई भी नहीं है :) जैसा कि मैंने सोचा था, मैं उन्हें अनुमान लगा सकता हूं। धन्यवाद :) –

+40

नहीं, अंतर वापसी प्रकार है, जैसा कि स्लैक्स ने कहा था। यह गैर-तुच्छ है। निष्पादन के अनुसार, दावा किया गया है कि आउटपुट स्ट्रीम को सीधे प्रस्तुत करना बेहतर होता है (यही कारण है कि वे w/शून्य रेंडरपार्टियल के साथ शुरू करने के लिए गए थे)। आंशिक रूप से परीक्षण में आंशिक उपयोगी (आईएमओ) है, हालांकि स्लैक्स ने कहा कि कुछ ऐसे स्थान हो सकते हैं जिन्हें आप उत्पादन कोड में प्रस्तुत करने से पहले आउटपुट में हेरफेर करना चाहते हैं। वे सिर्फ दुर्लभ हैं, इमो। – Paul

+41

आंशिक भी सहायक होता है जब आप नियंत्रक में दृश्य का आउटपुट प्राप्त करना चाहते हैं। इसका उपयोग ईमेल को प्रारूपित करने के लिए एक दृश्य का उपयोग करने के लिए किया जा सकता है। – Samg

4

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

+1

-1 किसी अन्य स्रोत से कॉपी करते समय, कम से कम क्रेडिट दें। यह प्रो एएसपी.नेट एमवीसी 3 फ्रेमवर्क (या कम से कम एक नया संस्करण) से एक शब्दकोष शब्द-प्रति-शब्द है। – Robotron

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