এএসপি.এনইটি এমভিসিতে, এর মধ্যে পার্থক্য কী:
Html.Partial
এবংHtml.RenderPartial
Html.Action
এবংHtml.RenderAction
এএসপি.এনইটি এমভিসিতে, এর মধ্যে পার্থক্য কী:
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()
রেজারের সাথে আরও সাবলীল বাক্য গঠন করার জন্য তৈরি করা হয়েছিল। যেমন @ ভ্লাদ বলেছেন, Html.RenderPartial()
আরও দক্ষ।
এইচটিএমএল কোডটি প্যারেন্ট পৃষ্ঠায় অনুলিপি করা হিসাবে @ এইচটিএমএল. পার্টিয়ালটিকে ভাবুন। @ এইচটিএমএল.রেন্ডার পার্টিশিয়ালটিকে প্যারেন্ট পৃষ্ঠায় অন্তর্ভুক্ত .asx ব্যবহারকারী নিয়ন্ত্রণ হিসাবে ভাবেন। একটি .ascx ব্যবহারকারী নিয়ন্ত্রণে অনেক বেশি ওভারহেড রয়েছে।
'@ এইচটিএমএল. পার্টিয়াল' এইচটিএমএল এনকোডেড স্ট্রিং দেয় যা পিতামাতার সাথে ইনলাইন তৈরি হয়। এটি পিতামাতার মডেলটি অ্যাক্সেস করে।
'@ এইচটিএমএল.রেন্ডার পার্টিশিয়াল' .asx ব্যবহারকারী নিয়ন্ত্রণের সমতুল্য প্রদান করে। এটি পৃষ্ঠার ভিউডেটা ডেটাডিয়ের নিজস্ব অনুলিপি পেয়েছে এবং রেন্ডার পার্টিশিয়ালের ভিউ ডেটাতে করা পরিবর্তনগুলি পিতামাতার ভিউ ডেটাতে প্রভাব ফেলবে না।
প্রতিচ্ছবি ব্যবহার করে আমরা পাই:
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.Partial
এবং @Html.RenderPartial
যখন আপনার আংশিক দর্শন মডেলটি পিতামাতার মডেলটির চিঠিপত্র হয় তখন ব্যবহৃত হয়, এটির জন্য আমাদের কোনও ক্রিয়া পদ্ধতি তৈরি করার দরকার নেই।
@Html.Action
এবং @Html.RenderAction
যখন আপনার আংশিক দর্শন মডেলটি পিতামাতার মডেল থেকে স্বতন্ত্র থাকে তখন ব্যবহৃত হয়, মূলত আপনি যখন পৃষ্ঠায় কোনও উইজেট ধরণের সামগ্রী প্রদর্শন করতে চান তখন এটি ব্যবহৃত হয়। আপনাকে অবশ্যই একটি অ্যাকশন পদ্ধতি তৈরি করতে হবে যা ভিউ থেকে পদ্ধতিটি কল করার সময় একটি আংশিক দৃশ্য ফলাফল দেয় returns
প্রশ্ন সম্পর্কে আরও:
"যখন এইচটিএমএল.রেন্ডার পার্টিশিয়াল () কেবলমাত্র আংশিক দৃশ্যের নামের সাথে ডাকা হবে, এএসপি.এনইটি এমভিসি একই কলিং ভিউ টেম্পলেট দ্বারা ব্যবহৃত একই মডেল এবং ভিউডাটা অভিধানের বস্তুগুলিকে আংশিক দৃশ্যে যাবে" "
পেশাদার ASP.NET এমভিসি 1.0 থেকে "NerdDinner"
এর রিটার্ন টাইপ 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.Partial
এবংHtml.RenderPartial
আংশিক বা রেন্ডার পার্টিশিয়াল: অ্যাকশন পদ্ধতি তৈরি করার দরকার নেই। আংশিক দৃশ্যে প্রদর্শিত হতে হবে এমন ডেটা বর্তমান পৃষ্ঠার মডেলটিতে উপস্থিত থাকলে ব্যবহার করুন।
ক্রিয়া বা রেন্ডারঅ্যাকশন: শিশু ক্রিয়া পদ্ধতি প্রয়োজন। যখন ভিউতে প্রদর্শনের জন্য ডেটা স্বাধীন মডেল থাকে তখন ব্যবহার করুন।
পার্থক্য:
এর রিটার্ন টাইপ RenderPartial
হয় void
, যেখানে যেমন Partial
আয়MvcHtmlString
আহ্বান Partial()
ও RenderPartial()
রেজার দর্শনগুলির পদ্ধতিগুলির জন্য সিনট্যাক্স
@ এইচটিএমএল. পার্টিয়াল ("আংশিকভিউনাম")
@ {এইচটিএমএল.রেন্ডার পার্টিয়াল ("আংশিকভিউনাম"); }
ওয়েবফর্ম ভিউগুলিতে অনুরোধ Partial()
এবং RenderPartial()
পদ্ধতিগুলির জন্য সিনট্যাক্স
[%: এইচটিএমএল. পার্টিয়াল ("আংশিকভিউনাম")%]
[% এইচটিএমএল.রেন্ডার পার্টিয়াল ("আংশিকভিউনাম"); %]
নিম্নলিখিত এর সাথে সম্পর্কিত 2 সাধারণ সাক্ষাত্কার প্রশ্ন আছে Partial()
এবং RenderPartial()
যখন আপনি ব্যবহার করেন Partial()
বেশি RenderPartial()
বিপরীতভাবে ভাইস এবং?
প্রধান পার্থক্য হ'ল RenderPartial()
রিটার্ন বাতিল এবং আউটপুট সরাসরি আউটপুট প্রবাহে লেখা হবে, যেখানে Partial()
পদ্ধতিটি ফিরে আসে MvcHtmlString
, যা কোনও পরিবর্তনশীলকে বরাদ্দ করা যেতে পারে এবং প্রয়োজনে এটি পরিচালনা করতে পারে। সুতরাং, যখন সামঞ্জস্যের জন্য আউটপুটটি কোনও ভেরিয়েবলের কাছে বরাদ্দ করার প্রয়োজন হয়, তখন আংশিক () ব্যবহার করুন, অন্যথায় রেন্ডারপার্টিয়াল () ব্যবহার করুন।
পারফরম্যান্সের জন্য কোনটি ভাল?
পারফরম্যান্সের দৃষ্টিকোণ থেকে, সরাসরি আউটপুট স্ট্রিমে রেন্ডারিং করা ভাল। RenderPartial()
ঠিক একই জিনিস এবং ওভার পারফরম্যান্স জন্য ভাল Partial()
।
"আংশিক" জন্য আমি সর্বদা এটি নিম্নলিখিত হিসাবে ব্যবহার করি:
আপনার যদি কোনও পৃষ্ঠায় অন্তর্ভুক্ত করার দরকার হয় যা আপনাকে নিয়ামকের মাধ্যমে যেতে হবে (যেমন আপনি অ্যাজাক্স কল দিয়েছিলেন) তবে "এইচটিএমএল.রেন্ডার পার্টিশিয়াল" ব্যবহার করুন।
আপনার যদি কোনও 'স্ট্যাটিক' অন্তর্ভুক্ত থাকে যা প্রতি-সেয়ে নিয়ন্ত্রকের সাথে লিঙ্কযুক্ত নয় এবং উদাহরণস্বরূপ কেবল 'ভাগ করা' ফোল্ডারে রয়েছে, "HTML.partial" ব্যবহার করুন