রেজার: @ এইচটিএমএল. পার্টিশিয়াল () বনাম @ রেন্ডারপেজ ()


94

শিশু টেম্পলেটটি উপস্থাপনের উপযুক্ত উপায় কী?

আর পার্থক্য কী? উভয়ই আমার পক্ষে কাজ করে বলে মনে হচ্ছে।

আর কেন @Html.RenderPartial()আর কাজ হয় না?

উত্তর:


128
Html.Partial("MyView")

"মাইভিউ" ভিউটিকে একটিতে রেন্ডার করে MvcHtmlString। এটি দেখার জন্য আদর্শ বিধি অনুসরণ করে (যেমন বর্তমান ডিরেক্টরি পরীক্ষা করুন, তারপরে Sharedডিরেক্টরিটি পরীক্ষা করুন )।

Html.RenderPartial("MyView")

Html.Partial()এটির মতো একই কাজ করে , এটি সরাসরি আউটপুটটি প্রতিক্রিয়া প্রবাহে লেখায়। এটি আরও কার্যকর, কারণ দেখার সামগ্রীটি মেমরিটিতে বাফার হয় না। তবে, কারণ পদ্ধতিটি কোনও আউটপুট ফেরত দেয় না, @Html.RenderPartial("MyView")কাজ করবে না। পরিবর্তে আপনি একটি কোড ব্লক কল মোড়ানো আছে: @{Html.RenderPartial("MyView");}

RenderPage("MyView.cshtml")

(পাথ ও ফাইলের নাম দ্বারা বদলে দৃশ্য নাম দ্বারা চিহ্নিত) সরাসরি প্রতিক্রিয়া প্রবাহে নিদিষ্ট দৃশ্য উপস্থাপন করে, মত Html.RenderPartial()। আপনি নিজের পছন্দ মতো যে কোনও মডেলটিকে দ্বিতীয় প্যারামিটার হিসাবে অন্তর্ভুক্ত করে সরবরাহ করতে পারেন

RenderPage("MyView.cshtml", MyModel)

8
@ {এইচটিএমএল.রেন্ডার পার্টিশিয়াল ("মাইভিউ"); @ @ এইচটিএমএল.রেন্ডার পার্টিশিয়াল ("মাইভিউ") এর দক্ষতা অর্জনের জন্য কি কোনও মেট্রিক রয়েছে?
ফ্যাস্ট

@ ফাউস্ট বলতে আপনি আংশিক ভিডি রেন্ডার পার্টিশিয়াল বলতে চাইছেন?
কচো সান্টা

4
@ কচো: হ্যাঁ, আমার মন্তব্যে @Html.Partial("MyView")বনাম পড়তে হবে@{Html.RenderPartial("MyView");}
ফাউস্ট

4
ছোট সংশোধন: রেন্ডারপেজের দ্বিতীয় পরামিতি () মডেল নয়, এটি একটি পরম [] অবজেক্ট যা পেজডাটা সম্পত্তি দ্বারা অ্যাক্সেস করা হয়। এটি উপরের মতো কাজ করে বলে মনে হচ্ছে কারণ ডিফল্টরূপে "পিতামাতার" পৃষ্ঠা থেকে মডেলটি "সন্তানের" কাছে চলে গেছে। msdn.microsoft.com/en-us/library/…
জন

কল করে কোনও মডেল বরাবর কোনও সম্পূর্ণ পৃষ্ঠা বাসাতে কোনও উপায় আছে কি RenderPage? আমি একটি নির্দিষ্ট ক্যোয়ারী প্যারামিটার নির্দিষ্ট করে একটি পৃথক পৃষ্ঠা বাসাতে চাই, যার ফলস্বরূপ page পৃষ্ঠার ডেটা ফিল্টার হবে এবং তদতিরিক্ত, তার নিজস্ব লেআউটটিও সরিয়ে ফেলবে।
শিমি ওয়েটজ্যান্ডলার

17

আমি পছন্দ করি

@RenderPage("_LayoutHeader.cshtml")

ওভার

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

কেবল সিনট্যাক্স সহজ এবং এটি আরও পাঠযোগ্য because এর বাইরে কোনও কার্যকারিতা বুদ্ধিমান কোনও পার্থক্য বলে মনে হচ্ছে না।

সম্পাদনা: রেন্ডার পার্টিশিয়ালের একটি সুবিধা হ'ল আপনাকে পুরো পথ বা ফাইল এক্সটেনশান নির্দিষ্ট করতে হবে না এটি সাধারণ স্থানগুলি স্বয়ংক্রিয়ভাবে অনুসন্ধান করবে।


4
আমি মনে করি এটি একটি মন্তব্য হওয়া উচিত উত্তর নয়। RenderPageসিনট্যাক্সের কারণেও আমি একমত ।
ইমান মাহমুদিনাসাব

6

RenderPartial পদ্ধতি অন্যান্য অধিকাংশ সাহায্যকারী পদ্ধতি মত ফেরত দেয় না HTML মার্কআপ। পরিবর্তে, এটি প্রতিক্রিয়া প্রবাহে সরাসরি লিখিত সামগ্রী লিখিত হয়, সেজন্য আমাদের অবশ্যই সেমিকোলন ব্যবহার করে এটিকে C # এর সম্পূর্ণ লাইনের মতো কল করতে হবে।

আংশিক ভিউ থেকে রেন্ডার এইচটিএমএলকে বাফার করার চেয়ে এটি কিছুটা বেশি দক্ষ, যেহেতু এটি যেভাবেই প্রতিক্রিয়া প্রবাহে লেখা হবে। আপনি একটি আরো সামঞ্জস্যপূর্ণ সিনট্যাক্স পছন্দ করেন, তাহলে ব্যবহার করতে পারেন Html.Partial পদ্ধতি, যা ঠিক হিসাবে একই আছে RenderPartial পদ্ধতি, কিন্তু আয় একটি HTML টুকরা এবং @ Html.Partial ( "পণ্য", পি) হিসেবে ব্যবহার করা যাবে।


2

আমরা আংশিক দৃষ্টিভঙ্গি ব্যবহার করে মডেলটিও পাস করতে পারি। @ এইচটিএমএল. পার্টিয়াল ("মাইভিউ", "মাইমোডেল");


0
@RenderPages() 

উপরেরগুলি এএসপি.নেট এমভিসিতে কাজ করে না। এটি কেবল ওয়েবপেজগুলিতে কাজ করে।

@Html.Partial("_Footer")

আপনাকে এএসপি.নেট এমভিসিতে উপরেরটি ব্যবহার করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.