معادل View Component و Partial View در فریمورک CodeBehind
شنبه 12 آبان 1403در این مقاله با ارائه مثال هایی عملی به ساختارهای متناظر View Component و Partial View در فریمورک CodeBehind پرداخته می شود. این مقاله نقدی بر ساختار View Component و Partial View نیز دارد اما در نظر میگیرد که توسعه دهندگان با View Component و Partial View آشنایی کامل دارند.
در چارچوب CodeBehind ساختارهای View Component و Partal View وجود ندارد. به جای آن دو، می توانید از Template و Call 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 :
- Asp.Net Core
- 317 بازدید
- 0 تشکر
برای درج نظر باید وارد سایت شوید