ASP.NET MVC में, क्या अंतर है:
Html.Partial
तथाHtml.RenderPartial
Html.Action
तथाHtml.RenderAction
ASP.NET MVC में, क्या अंतर है:
Html.Partial
तथा Html.RenderPartial
Html.Action
तथा Html.RenderAction
जवाबों:
Html.Partial
एक रिटर्न देता है। आंतरिक रूप से Html.RenderPartial
कॉल Write
करता है और वापस लौटता है void
।
मूल उपयोग है:
// Razor syntax
@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName"); }
// WebView syntax
<%: Html.Partial("ViewName") %>
<% Html.RenderPartial("ViewName"); %>
ऊपर स्निपेट में, दोनों कॉल एक ही परिणाम प्राप्त करेंगे।
जबकि कोई Html.Partial
एक चर के आउटपुट को स्टोर कर सकता है या इसे एक विधि से वापस कर सकता है, कोई ऐसा नहीं कर सकता है Html.RenderPartial
।
परिणाम Response
निष्पादन / मूल्यांकन के दौरान स्ट्रीम को लिखा जाएगा ।
यह भी लागू होता है Html.Action
और Html.RenderAction
।
Html.Partial()
रेजर के साथ अधिक धाराप्रवाह वाक्य रचना करने के लिए बनाया गया था। जैसा @Vlad ने कहा, Html.RenderPartial()
अधिक कुशल है।
मूल पृष्ठ में कॉपी किए गए HTML कोड के रूप में @ Html.Partial के बारे में सोचो। @ Html.RenderPartial को माता-पिता पृष्ठ में शामिल किए गए एक .ascx उपयोगकर्ता नियंत्रण के रूप में सोचें। एक .ascx उपयोगकर्ता नियंत्रण कहीं अधिक उपरि है।
'@ Html.Partial' एक html एन्कोडेड स्ट्रिंग देता है जो माता-पिता के साथ इनलाइन का निर्माण करता है। यह अभिभावक के मॉडल को एक्सेस करता है।
'@ Html.RenderPartial' एक .ascx उपयोगकर्ता नियंत्रण के बराबर देता है। यह पृष्ठ के ViewDataDictionary और RenderPartial के ViewData में किए गए परिवर्तनों को माता-पिता के ViewData को प्रभावित नहीं करता है।
प्रतिबिंब का उपयोग हम पाते हैं:
public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model, ViewDataDictionary viewData)
{
MvcHtmlString mvcHtmlString;
using (StringWriter stringWriter = new StringWriter(CultureInfo.CurrentCulture))
{
htmlHelper.RenderPartialInternal(partialViewName, viewData, model, stringWriter, ViewEngines.Engines);
mvcHtmlString = MvcHtmlString.Create(stringWriter.ToString());
}
return mvcHtmlString;
}
public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName)
{
htmlHelper.RenderPartialInternal(partialViewName, htmlHelper.ViewData, null, htmlHelper.ViewContext.Writer, ViewEngines.Engines);
}
Partial
एक बफर में रेंडर करने का मतलब यह नहीं है कि यह अतुल्यकालिक रूप से प्रस्तुत किया गया है - काफी विपरीत - मैं यह नहीं देख सकता कि आप कैसे दावा कर सकते हैं RenderPartial
"अधिक संसाधन गहन"।
यहाँ मैं क्या पाया है:
रेंडरएक्शन का उपयोग करें जब आपके पास देखने के लिए भेजने के लिए एक मॉडल नहीं है और वापस लाने के लिए बहुत सारे HTML हैं जिन्हें एक चर में संग्रहीत करने की आवश्यकता नहीं है।
एक्शन का उपयोग करें जब आपके पास दृश्य को भेजने के लिए एक मॉडल नहीं है और वापस लाने के लिए थोड़ा सा पाठ है जिसे एक चर में संग्रहीत करने की आवश्यकता है।
RenderPartial का उपयोग तब करें जब आपके पास दृश्य को भेजने के लिए एक मॉडल हो और इसमें बहुत सारे html होंगे जिन्हें किसी चर में संग्रहीत करने की आवश्यकता नहीं है।
जब आप देखने के लिए भेजने के लिए एक मॉडल रखते हैं तो आंशिक का उपयोग करें और थोड़ा सा पाठ होगा जिसे एक चर में संग्रहीत करने की आवश्यकता है।
RenderAction और RenderPartial तेजी से कर रहे हैं।
@Html.Partial
और @Html.RenderPartial
इसका उपयोग तब किया जाता है जब आपका आंशिक दृश्य मॉडल मूल मॉडल का पत्राचार होता है, हमें इसे कॉल करने के लिए कोई क्रिया विधि बनाने की आवश्यकता नहीं है।
@Html.Action
और @Html.RenderAction
इसका उपयोग तब किया जाता है जब आपका आंशिक दृश्य मॉडल मूल मॉडल से स्वतंत्र होता है, मूल रूप से इसका उपयोग तब किया जाता है जब आप पृष्ठ पर किसी भी विजेट प्रकार की सामग्री प्रदर्शित करना चाहते हैं। आपको एक एक्शन मेथड बनाना होगा जो व्यू से मेथड को कॉल करते समय आंशिक व्यू रिजल्ट देता है।
प्रश्न के बारे में अधिक जानकारी:
"जब Html.RenderPartial () को आंशिक दृश्य के नाम से पुकारा जाता है, ASP.NET MVC आंशिक दृश्य को उसी मॉडल और ViewData शब्दकोश ऑब्जेक्ट को कॉलिंग व्यू टेम्प्लेट द्वारा उपयोग किए जाने पर पास करेगा।"
व्यावसायिक ASP.NET MVC 1.0 से "नर्डडिनर"
रिटर्न प्रकार यह Html.RenderAction
है void
कि इसका मतलब यह है कि यह सीधे देखने में प्रतिक्रियाओं को प्रस्तुत करता है कि रिटर्न प्रकार कहां Html.Action
है MvcHtmlString
आप नियंत्रक में इसके रेंडर दृश्य को पकड़ सकते हैं और इसे निम्नलिखित विधि का उपयोग करके संशोधित कर सकते हैं
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
यह दृश्य का Html स्ट्रिंग लौटाएगा।
यह भी लागू होता है Html.Partial
औरHtml.RenderPartial
अंतर:
रिटर्न का प्रकार RenderPartial
है void
, जहां Partial
रिटर्न के रूप मेंMvcHtmlString
रेज़र के विचारों को लागू करने Partial()
और RenderPartial()
तरीकों के लिए सिंटैक्स
@ Html.Partial ("आंशिक दृश्य नाम")
@ {Html.RenderPartial (" आंशिक दृश्य नाम "); }
वेबॉइंट विचारों में आह्वान Partial()
और RenderPartial()
तरीकों के लिए सिंटैक्स
[%: Html.Partial ("PartialViewName")%]
[% Html.RenderPartial (" आंशिक दृश्य नाम "); %]
निम्नलिखित से संबंधित 2 आम साक्षात्कार सवाल कर रहे हैं Partial()
और RenderPartial()
जब आप का प्रयोग करेंगे Partial()
से अधिक RenderPartial()
विपरीत उपाध्यक्ष और?
मुख्य अंतर यह है कि RenderPartial()
रिटर्न शून्य है और आउटपुट सीधे आउटपुट स्ट्रीम पर लिखा जाएगा, जहां Partial()
विधि रिटर्न के रूप में है MvcHtmlString
, जिसे एक चर को सौंपा जा सकता है और यदि आवश्यक हो तो इसे हेरफेर कर सकता है। इसलिए, जब इसे हेरफेर करने के लिए एक चर को आउटपुट निर्दिष्ट करने की आवश्यकता होती है, तो आंशिक () का उपयोग करें, अन्यथा रेंडरपार्टियल () का उपयोग करें।
प्रदर्शन के लिए कौन सा बेहतर है?
एक प्रदर्शन के नजरिए से, सीधे आउटपुट स्ट्रीम में रेंडर करना बेहतर है। RenderPartial()
बिल्कुल वैसा ही करता है और प्रदर्शन के लिए बेहतर है Partial()
।
"आंशिक" के लिए मैं हमेशा इसका उपयोग इस प्रकार करता हूं:
यदि कोई ऐसी चीज़ है जिसे आपको किसी ऐसे पृष्ठ में शामिल करना है, जिसे आपको नियंत्रक के माध्यम से जाना होगा (जैसे आप एक अजाक्स कॉल के साथ) तो "Html.RenderPartial" का उपयोग करें।
यदि आपके पास एक 'स्थिर' शामिल है, जो प्रति-नियंत्रक से जुड़ा नहीं है और उदाहरण के लिए 'साझा' फ़ोल्डर में, "HTML.partial" का उपयोग करें
@Html.Partial
HTML-एन्कोडेड स्ट्रिंग में दृश्य लौटाता है और समान दृश्य TextWriter
ऑब्जेक्ट का उपयोग करता है ।
@Html.RenderPartial
यह विधि वापस आती है void
।
@Html.RenderPartial
से तेज है@Html.Partial
इसके लिए वाक्य रचना PartialView
:
[HttpGet]
public ActionResult AnyActionMethod
{
return PartialView();
}