معادل View Component و Partial View در فریمورک CodeBehind

شنبه 12 آبان 1403

در این مقاله با ارائه مثال هایی عملی به ساختارهای متناظر View Component و Partial View در فریمورک CodeBehind پرداخته می شود. این مقاله نقدی بر ساختار View Component و Partial View نیز دارد اما در نظر میگیرد که توسعه دهندگان با View Component و Partial View آشنایی کامل دارند.

معادل View Component و Partial View در فریمورک CodeBehind

در چارچوب  CodeBehind  ساختارهای View Component و Partal View وجود ندارد. به جای آن دو، می توانید از Template و Call View استفاده کنید.

برای درک کامل عملکرد View Component و Partial View توصیه می شود مقالات زیر را مطالعه کنید:

View Component

Partial View

استفاده از قالب

قالب ها قسمت هایی از صفحه aspx هستند که در بلوک ها ذخیره می شوند. بلوک های قالب را می توان به صورت داخلی در یک صفحه aspx یا به صورت خارجی در یک صفحه astx ذخیره کرد. استفاده از قالب در چارچوب CodeBehind به شما این امکان را می دهد که بخش هایی از یک View را برای مدیریت بهتر و استفاده مجدد از View ها جدا کنید.

 

کدهای زیر یک بلوک قالب هستند

@#memberprofile{
<div style="background-image: url(`/image/member/@user.BackgroundImage;color: @user.TextColor;`);">
...
</div>
}

در زیر نحوه فراخوانی بلوک قالب آورده شده است.

 

استفاده از بلوک قالب

@page
<html>
...
@{
UserInfo user = new UserInfo(Session["user_id"]);
}
@#memberprofile
...
</html>

 

نتیجه قبل از رندر

@page
<html>
...
@{
UserInfo user = new UserInfo(Session["user_id"]);
}
<div style="background-image: url(`/image/member/@user.BackgroundImage;color: @user.TextColor;`);">
...
</div>
...
</html>

نتیجه بالا قبل از عملیات ایجاد کلاس View نهایی ایجاد می شود و شما آن را نمی بینید. کدهای فوق انتزاعی هستند.

استفاده از فراخوانی View

در فریمورک CideBehind، می‌توانیم یک View را در یک View دیگر فراخوانی کنیم. حتی می‌توانیم یک View را همراه با نمونه مدل اولیه فراخوانی کنیم. فراخوانی View یک روش ساده و قدرتمند بدون هیچ گونه پیچیدگی اضافی است که در View Component یا Partial View وجود دارد.

 

صفحه زیر یک View (page2.aspx) است که می خواهیم آن را در View دیگری فراخوانی کنیم. در خط دوم این فایل صفت @break اضافه شده است که اجازه دسترسی به این View را با URL نمی دهد (page2.aspx در مرورگر اجرا نمی شود).

 

در خط سوم مدلی به نام Page2Model در View مشخص شده است. از آنجایی که ما نمی خواهیم از چکیده CodeBehindModel استفاده کنیم، نام کلاس Model در براکت های باز و بسته قرار می گیرد. در خط آخر، یک تگ پیوند وجود دارد که با مقادیر کلاس Page2Model مقدار دهی اولیه می شود.

 

View دوم (page2.aspx)

@page
@break
@model {Page2Model}

<h1>Welcome to My Page</h1>
<p>Here is a link for you:</p>
<a href="@model.Href">@model.Value</a>

کد زیر نیز کلاس Model است.

 

کلاس مدل برای View دوم

public class Page2Model
{
    public string Href { get; set; }
    public string Value { get; set; }
}

صفحه زیر یک نمای کامل است که با استفاده از متد LoadPage، یک View را با نام page2.aspx همراه با یک نمونه اولیه از کلاس Page2Model فراخوانی می کند.

 

View اول (page1.aspx)

@page
@layout "/layout.aspx"
@{
  ViewData.Add("title","Load page 2 with model page");
}
<html>
...

@LoadPage("/page2.aspx", new Page2Model(){Href = "https://google.com", Value = "Google"})

...
</html>

نتیجه گیری

استفاده از View Component و Partial View در ASP.NET Core دست و پا گیر است. آنها دیگ بخار تولید می کنند و یادگیری آنها سخت است، و همچنین ساختار آنها متفاوت از سایر View ها می باشد. به عنوان فردی که سال ها ابزارهای توسعه وب را تجزیه و تحلیل می کند، نمی توانم این پیچیدگی های اضافی را درک کنم. در فریمورک CodeBehind، می توانید به سادگی یک View را در یک View دیگر فراخوانی کنید. این سادگی نشان دهنده سادگی فریمورک CodeBehind نیست، این سادگی به دلیل معماری سطح بالای این فریمورک مدرن و انقلابی است.

لینک های مرتبط

مخزن GitHub:

https://github.com/elanatframework/Code_behind

 

دریافت از NuGet:

https://www.nuget.org/packages/CodeBehind/

 

صفحه CodeBehind :

https://elanat.net/page_content/code_behind

اشکان

نویسنده 4 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید

نظرات کاربران

برای درج نظر باید وارد سایت شوید