Table of Contents
Introduction to Razor Views in ASP.NET MVC
ولا تزال شبكة MVC تشكل حجر الزاوية في تطوير شبكة الإنترنت على مجموعة مايكروسوفت، مما يتيح فصلاً نظيفاً للشواغل، والسيطرة على ردود شركة HTTP بشكل دقيق، وفي قلب محركها، تكمن شركة Razor، وهي عبارة عن محرك مغري قوي يتيح لك الجمع بين الرمز C# وبين نظام HTML بالبحر.
ويتعمق هذا الدليل الموسع في آراء رازور، ويشمل السمات المتطورة مثل المخططات والجزئيات، والنموذج الملزم، وتكامل المصادقة، وأفضل الممارسات في مجال الأداء، وسواء كنت تبني تطبيقا صغيرا على شبكة الإنترنت أو موقعا عاما واسع النطاق، فإن تسيير رازور سيساعدك على إنجاز صفحات قابلة للاستمرار، ومؤداها، ومناسبة للمنظومة.
ما هي آراء رازور؟
(ب) إذا طلب أحد المستخدمين إجراءً من شركة " ”الشركة“، فإن خط الأنابيب MVC يوجّه الطلب إلى جهة مراقبة، وهذا الإجراء عادة ما يعيد عميل [(FLT:1]] عن طريق الاتصال ، ثم يحدد الإطار ما يقابله من ملف، وينفذ الخيوط التي تُرسلها شركة HZ.
والمنافع الرئيسية هي أن يقوم رازور بتجميع الآراء في صفوف الشبكة في فترات ما قبل بدء التشغيل أو تجميع الوقت (مع مراعاة تشكيلة المشروع)، مما يتيح لك استخدام القوة الكاملة لـ (NET) في فترات التشغيل، بما في ذلك الحلقات، والمشروطات، والتعبيرات المعقدة، وحتى مناولة الاستثناء، مباشرة في نطاق علاماتك.
على سبيل المثال، نظرة بسيطة من نوع (رازور) قد تبدو هكذا:
@{
ViewBag.Title = "Home Page";
}
<h1>Welcome to @ViewBag.Title</h1>
<p>The current server time is @DateTime.Now.ToLongTimeString().</p>
كل شيء مهيأ بـ يشير إلى الانتقال من HTML إلى C#. The character is the core of Razor syntax, and the motor is enoughelli to infer where the C# code ends and HTML resumes, even across spaces, parentheses, or HTML tag boundaries.
Razor Syntax Deep Dive
لكتابة آراء رازور فعالة يجب أن تفهم مختلف أساليب الكود وطرق التعبير المتاحة
Inline Expressions
وأبسط شكل هو تعبير خطي، حيث يُنتج عن ذلك نص واحد ]، يليه تعبير عن تعبير عن كلمة " C# " .
<p>Your account balance is @balance.ToString("C2")</p>
وإذا عاد التعبير إلى أو نفذ ، فإن رازور لن يسجل الناتج في سجل بيانات شركة HTML، وبالنسبة لجميع الأنواع الأخرى، يورد رازور تلقائياً قيمة الـ HTML-encodes the value to prevent cross-site scripting (XSS) vulnerabilities.
كود القفل
Use followed by a couple of curly braces to write multi-statement C# blocks:
@{
var greeting = "Hello";
var name = "World";
var message = greeting + ", " + name + "!";
}
<p>@message</p>
داخل الشفرة، يمكنك إعلان المتغيرات، وطرق الاتصال، و أداء المنطق،
هياكل الرقابة
(أ) يدعم الرادارات المعيارية C# كلمات رئيسية لتدفقات التحكم مثل ، ، ، ، ، ، و، ويجب أن يكون كل بيان مهيأ [رمزاً متبعاً لـاً لـ
@if (Model.IsAuthenticated)
{
<span>Welcome back, @Model.UserName!</span>
}
else
{
<a href="/Account/Login">Log in</a>
}
وبالمثل، فإن الحلقات تدمج بشكل طبيعي:
<ul>
@foreach (var item in Model.Items)
{
<li>@item.Name (@item.Price.ToString("C"))</li>
}
</ul>
ملاحظة أن لا يلزم إلا في كلمة مفتاح الافتتاح، والصدر الختامي هو سهل C# وRzor يستأنف بشكل صحيح HTML عند مواجهة ] البطاقة.
التعليقات
ويقدم رازور تعليقاته الخاصة به مركباً يجرد محتوى من نظام HTML الذي أصبح:
@* This is a Razor comment. It will not appear in the output. *@
ولا تزال تعليقات شركة HTML () ترسل إلى المصفوف، وهي مرئية في المصدر، وتستخدم تعليقات شركة Razor لمذكرات المطور أو لقطع الرموز التي تم فكها مؤقتا.
خصائص خاصة
(أ) أن يُظهر رمزاً حرفياً ، يستخدمه .() وفيما يتعلق بالعناوين البريدية، يعترف به رازور تلقائياً ولا يتطلب الفرار، فعلى سبيل المثال، يُعامل بوصفه نصاً سهلاً.
الآراء المتشابكة بقوة والنموذج
وتستخدم إحدى أكثر الأنماط قوة في برنامج دعم البرامجيات المتعددة المؤشرات في شبكة المعلومات والاتصالات آراء مصاغة بقوة، بدلا من الاعتماد على أو ، تعلنون أن النوع النموذجي على رأس الرأي باستخدام التوجيه (الحالة الدنيا 'm ' )، وهذا يعطيكم مهلة للتدقيق والدعم في الممتلكات النموذجية.
@model IEnumerable<Product>
<h2>Product List</h2>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Price</th>
</tr>
</thead>
<tbody>
@foreach (var product in Model)
{
<tr>
<td>@product.Name</td>
<td>@product.Price.ToString("C")</td>
</tr>
}
</tbody>
</table>
ويمر المتحكم بالنموذج عبر طريقة :
public ActionResult Products()
{
var products = db.Products.ToList();
return View(products);
}
كما أن الآراء ذات الطابع القوي تبسط نماذج العروض الملزمة، وعندما يوضع نموذج، يطلب إطار لجنة الخيارات التقنية المتعددة الجنسيات تلقائياً بيانات عن خصائص البارامترات النموذجية في إجراءات المتحكم، شريطة أن تكون أسماء المدخلات مطابقة لأسماء ممتلكات النموذج.
ViewBag, ViewData, and TempData
وفي حين يفضل وضع نماذج مصممة بقوة، فإن الإطار يوفر أيضا حاويات غير منظَّمة لنقل البيانات بين المتحكمين والآراء:
- ViewBag:] A dynamic object that allows you to set arbitrary properties. It is a wrapper over . Example: . Access it in the view with .
- ViewData:] A dictionary of key-value couples () Access it as .
- ]TempData:] Similar to ViewData but persists across a single redirect. It is stored in session and clear after being read. Useful for displaying onetime messages like “Record Save successfully”.
استخدام هذه الآليات بشكل متقطع، يمكن أن يؤدي الإفراط في استخدام فيو باغ إلى أخطاء في الوقت الحاضر ويجعل من الصعب الحفاظ على الآراء، ويحتفظ بها لقلة ما تحتاج إليها بيانات مساعدة لا تتناسب مع النموذج الرئيسي.
العيون و فيو ستارت
ويلقي العيون نظرة وشعوراً متسقين من خلال تحديد صفحة رئيسية مشتركة، وهو ملف يحتوي على الهيكل الخارجي لصفحة (رأس وملاحة وقدم) و [يدرج فيه مضمون الآراء الفردية.
فعلى سبيل المثال، قد يبدو نموذجيا :
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title - My App</title>
@Styles.Render("~/Content/css")
</head>
<body>
<nav>...</nav>
<main>
@RenderBody()
</main>
<footer>...</footer>
@Scripts.Render("~/bundles/js")
@RenderSection("Scripts", required: false)
</body>
</html>
ويمكن أن تحدد الآراء الفردية أي مخطط لاستخدامه، وبموجب الاتفاقية، يضع ملف ] في ] الملف مخططاً للتخلف عن جميع الآراء في ذلك الملف:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
ويمكنك تجاوز المخطط في أي وجهة نظر محددة بإعادة تخصيص ممتلكات ، وهذا مفيد بصفة خاصة بالنسبة للصفحات التي تحتاج إلى مخطط مختلف تماما، مثل صفحات لوحات الدخول أو صفحات الأخطاء.
الآراء الجزئية ومكونات اليقظة
(ج) الآراء الجزئية هي شظايا قابلة لإعادة استخدامها من جانب وحدة التفتيش المشتركة يمكن أن تُدرج ضمن آراء أخرى، وهي مفيدة بصفة خاصة في الأشكال المعقدة أو البنود المدرجة في القائمة أو أي عنصر يظهر في أماكن متعددة، ولخلق وجهة نظر جزئية، ببساطة، إنشاء ملف يُدعى عادة بتأكيد رئيسي (مثلاً، ).
تُصدرين وجهة نظر جزئية من وجهة نظر أخرى باستخدام أو :
@Html.Partial("_ProductCard", item)
والفرق هو أن ] يعيد سلسلة HTML، في حين أن ] يكتب مباشرة إلى مجرى الاستجابة (أسرع قليلا بالنسبة لجزأين كبيرين، ولكن لا يمكن استخدامه داخل مجموعة شفرة.
بالنسبة للعناصر الأكثر تعقيداً وصعوبةً وثقيلة (مثل موجز للسوق يتطلب الوصول إلى قواعد البيانات) النظر في في المكونات .() والمكونات البصرية هي صفوف كاملة مع أسلوبها الخاص في استخدام الفاتور/الإنفوكسين، مما يتيح الحقن في الخدمات والتجهيز المعقد، وهي الخليفة الحديثة التي تخلف إجراءات الطفل:
public class CartSummaryViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
var cart = await GetCartAsync();
return View(cart);
}
}
Invoke from a view with .]
الأقسام والقسم الجنساني
وتسمح لك الأقسام بتحديد المناطق في مخطط يمكن أن تملأه الآراء الفردية، وتشمل حالات الاستخدام المشترك نصوصاً محددة لصفحة معينة أو صحائف نمطية أو محتوى جانبي، وفي المخطط، تعلن فرعاً به .
@section Scripts {
<script src="~/Scripts/page-specific.js"></script>
}
(أ) إذا كان هناك قسم معين حسب الاقتضاء ()، فإن كل رأي يقول إن استخدام المخطط يجب أن يحدده، أو أن يتم استثناء منه، وأن يستخدم الأقسام اللازمة للأصناف الأساسية للصفحة، مثل مجال اللقب أو المحتوى الرئيسي.
ويمكنك أيضاً التحقق من أن قسماً قد عُرِّف في الرأي باستخدام داخل المخطط، مما يسمح لك بتقديم محتوى غير مقصود.
HTML Helpers vs Tag Helpers
وتوفر آراء رازور أسرتين من أدوات جانب الخادم لتوليد نظام HTML: أجهزة المساعدة في مجال مكافحة غسل الأموال وأجهزة المساعدة في التاج.
- HTML Helpers] are methods called in the view, such as or . They return HTML strings and are familiar to developers who have worked with earlier versions of MVC.
- Tag Helpers] were introduced in ASP.NET Core but are also available in ASP.NET MVC 5.x via a NuGet package () and they allow you to write HTML-like tags that the server processes, e.glisation, more Tag
على سبيل المثال، خلق شكل مع مساعدي التاج يبدو مثل:
<form asp-action="Submit" asp-controller="Home" method="post">
<label asp-for="Email"></label>
<input asp-for="Email" />
<span asp-validation-for="Email"></span>
<button type="submit">Submit</button>
</form>
ويرتبط مساعدو التاغ تلقائياً بالممتلكات النموذجية، ويجعلون خصائص التصديق، ويولدون وحدات محدثة مضرورة، ويفضلون عموماً تحقيق تنمية جديدة لأنهم يدمجون دون هوادة مع التحقق غير المتعمد ويسهل عليهم الحفاظ عليها.
المقومة ومعالجة الأخطاء
ويعمل رازور في إطار نظام المصادقة في نظام ASP.NET MVC. ويمكنك أن تعرض أخطاء على مستوى النموذج وعلى مستوى الممتلكات في التحقق باستخدام أجهزة المساعدة في استخدام جهاز HTML أو أجهزة المساعدة في التذاكر، وتظهر جميع الأخطاء في آن واحد، وتظهر أخطاء في ميدان محدد.
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" })
وعندما تستخدمين أجهزة مساعدة التاج، تُضاف فترة التصديق تلقائياً وتُقطَع في شكل نموذج ملزم إذا فشل التصديق، وتُنشأ هذه العلامات المثبتة من جانب العملاء باستخدام شروح البيانات على نموذجك، مثل ، ، و.
ولتمكين المصادقة على جانب العملاء غير المتعمدين، ضمان إدراج المكتبات الضرورية في مكتبات جافاسكريب ( و) في مرحلتكم، عادة في قسم .
Razor with AJAX and Partial Rendering
لا تقتصر آراء الزور على تحميل الصفحات الكاملة ويمكنك استخدامها لجعلها جزءا من HTML يتم إعادتها عبر AJAX وإدراجها في إدارة الشؤون الإدارية، واتخاذ إجراءات لضبطها تعيد النظر جزئيا:
public ActionResult ProductDetails(int id)
{
var product = db.Products.Find(id);
if (product == null) return HttpNotFound();
return PartialView("_ProductDetails", product);
}
على جانب العملاء، استخدموا (جراي) أو المُبنَّى في مُساعدة لتحميل النتيجة الجزئية إلى حاوية:
@Ajax.ActionLink("View Details", "ProductDetails", new { id = item.Id },
new AjaxOptions { UpdateTargetId = "detailsContainer" })
يجب أن تُضمّن نص للمساعدين للعمل، وكبديل لذلك، يمكنك كتابة نصير سهل يُحدّث الحاوية يدوياً، وفائدة استخدام جزئيات الرزق في شركة AJAX هي أن منطق الخادم وعلامته لا يزالان متسقين، ويتجنبان الازدواجية بين الردود الكاملة والجزئية.
اعتبارات الأداء لآراء رزور
وعلى الرغم من تجميع آراء الرايزور، لا تزال هناك ثغرات في الأداء لتجنب ما يلي:
- تجنب المنطق المفرط في الآراء.] إبقاء الآراء بسيطة قدر الإمكان؛ ونقل الحسابات المعقدة، وتحويلات البيانات، وقواعد الأعمال إلى المتحكم، أو طبقة الخدمات، أو نموذج النظر.
- Use caching judiciously.] For views that rarely change (e.g., static navigation), consider applying output caching with the attribute on the controller action. For partial views that are expensive to render, use with [85FT: extension]
- Minimize the number of partial views rendered per page.] each call adds overhead. If a partial is used many times in a cycle, consider building the HTML in the controller using a StringBuilder or a custom HTML electricity.
- Use async actions for I/O-bound operations.] If your view depends on data that involves database queries or external API calls, define the controller action as and call ] before passing the model. This frees up threads during I/O wait.
- Precompile Razor views in production using or the built-in in ASP.NET MVC 5 (via ]] set to in project properties). This eliminates the first-request compilation delay.
أفضل الممارسات لإبداء آراء رازور قابلة للحفظ
- Always use strongly-typed models] and avoid ViewBag for main data. This improves compilation-time check and readability.
- Follow naming conventions:] views should match controller action names, and partials should be prefixed with underscore.
- Usese display and editor templates] for reusable data type displays. For example, create to format dates consistently.
- Separate CSS and JavaScript] from views. Put only minimal inline fashions; use bundling and minification for external resources.
- rite unit tests for controllers and view models.] While views themselves are hard to test, ensure that the data passed to them is correct. Consider UI testing frameworks like Selenium or Playwright for integration-level validation.
- Keep layouts focused.] Don not put heavy logical or data retrieval in a layout. Layouts should only contain scaffolding HTML and calls to and sections.
خاتمة
والآراء المزروعة هي العمود الفقري للجيل الدينامي من شبكة HTML في ASP.NET MVC. Their clean syntax, seamless integration with C#, and support for strong typing, layouts, partials, and validation make them a powerful tool for building maintainable web applications. By mastering advanced features like Tag helpers, View componentss, and AJAX partial keeping, you can create rich user.
For further reading, consult the official Microsoft documentation on Razor Syntax, ]Partial Views, and Tag helpers in ASP.NET Core] (which also apply to MVC 5).