همانطور که در حین تولید یک پروژه ASP.NET همه ما مشاهده کرده ایم، صدا زدن و استفاده از PartialView ها در RunTime راههای مختلفی خواهد داشت.حتی گاهی مشاهده شده برنامه نویسان دچار سردرگمی گشته و به درستی نمی دانند هر کدام از این راهها چه تفاوتها، معایب و مزایایی دارد و جای درست استفاده از هر کدام کجاست.
بسمه تعالی
مقایسه RenderPartial ، RenderAction ،Partial و Action در MVC Razor
همانطور که در حین تولید یک پروژه ASP.NET همه ما مشاهده کرده ایم، صدا زدن و استفاده از PartialView ها در RunTime راههای مختلفی خواهد داشت.حتی گاهی مشاهده شده برنامه نویسان دچار سردرگمی گشته و به درستی نمی دانند هر کدام از این راهها چه تفاوتها، معایب و مزایایی دارد و جای درست استفاده از هر کدام کجاست.
در این قصد داریم خیلی سریع و کوتاه به بررسی انواع این روشها و مزایا و معایب هر کدام بپردازیم.
راههای ممکنه به شرح زیر است.
1-Html.RenderPartial
2-Html.RenderAction
3- Html.Partial
4-Html.Action
حال به صورت مجزا به بررسی هر یک خواهیم پرداخت.
1- Html.RenderPartial
این روش نتیجه حاصله را به صورت مستقیم به Stream خروجی منتقل و میتوان آنرا را نسبتا سریعتر از دیگر روشها قلمداد کرد.این روش حتی بدون ایجاد هیچ Action خاص و مجزایی قابل استفاده است. به مثال زیر که جهت نمایش کامنت بکار میرود دقت کنید.
@{Html.RenderPartial("_Comments");}
2-Html.RenderAction
این روش هم نتیجه حاصله را مستقیم به Stream ارسال میکند، ولی برای اجرا به یک Action مجزا نیاز خواهد داشت. به مثال زیر دقت کنید.
@{Html.RenderAction("Category","Home");}
در این مثال یک Action Method به نام Category درون HomeController وجود دارد که از طریق این دستور صدا زده خواهد شد. این روش در مواردی که قصد استفاده از Cache حاصله وجود داشته باشد، بسیار کاربردی و مفید خواهد بود. این روش و روش شماره 1 به صورت مستقیم مقادیر تولید شده را به HTTP response stream منتقل خواهند نمود. شایان ذکر است، وجود یک Child Action در این روش الزامی است.
3- Html.Partial
در این روش نتیجه مقادیر Render شده به صورت HTML Encode خواهد بود. در این روش نتیجه در یک Variable ذخیره شده و به صورت یک String Type برگردانده خواهد شد.در این روش هم نیازی به ایجاد یک Action مجزا وجود نخواهد داشت.
1. @Html.Partial("_Comments")
4-Html.Action
در این متد از صدا زدن PartialView ها نتیجه به صورت یک HtmlString به خروجی ارسال خواهد گردید.در این روش به وجود یک Child Action نیاز خواهد بود.
@{Html.Action("Category","Home");
حال باید هر کدام از روشهای فوق را در پروژه ها بر حسب وضعیت مورد بررسی قرار دهید تا آرام آرام به نتیجه گیری درست رسیده و بهترین انتخاب را داشته باشید.