וובמאסטר - תיכנות ובניית אתרים

מדריך ASP.NET MVC - הגדרות פריסה

ori_calvo ,‏ מכללת הי טק‏ ‏/‏ 11 פברואר, 2011
F+
F-

בעיה קלאסית בפיתוח אפליקציה WEB-ית היא השיתוף של קטעי HTML בין תצוגות שונות. לרוב, יש חלקים מסוימים כמו ה-Header וה-Footer אשר חוזרים על עצמם. בפרק זה נלמד כיצד ליצור מראה אחיד לכל התצוגות בתוכנית מבלי לפגוע בשוני של כל תצוגה.

להורדת הקוד של הפרק הקודם לחץ כאן

פתח את הקובץ Shared\_Layout.cshtml:

<!DOCTYPE html>
<
html
>
<
head>
    <title>@ViewBag.Title</title>

    ...
</head>

<body>
    @RenderBody()
</body
>
</
html
>

קובץ זה מגדיר את המראה הכללי של האתר. שים לב כי זהו קובץ ה- CSHTML היחיד בפרויקט אשר מכיל תגיות HEAD ו-BODY. אם נתבונן בתצוגה אחרת בתוכנית לדוגמא: Views\Group\Index.cshtml

@model AddressBook.Models.Group
          
@using AddressBook.Models;

<div class="itemTitle">
    Current group: @this.Model.Description
</div>

<div class="menu">   
    ...

</
div>

<div class="items">
    ...
</div
>

נגלה כי תצוגה זו איננה מגדירה את תגיות ה-BODY וה-HEAD.

למעשה כל תצוגה בתוכנית למעט Layout.cshtml_ מייבאת באופן אוטומטי את ה-HTML מתוך Layout.cshtml_ ומחדירה במקום הקריאה לפונקציה RenderBody את התוכן ה-HTML המוגדר בתוכה. הרצת התוכנית ובחינת ה-HTML בצד ה-Browser מראה כיצד שתי התצוגות מתחברות לכדי HTML שלם:

<!DOCTYPE html>
<
html
>
<
head>
    <title></title>
...


</
head>

<body>

<div class="groupTitle">
    ...
</div>

<div class="menu">
    ...

</
div>

<div class="item">
...
</div>

<div class="item">
...
</div>

</body
>
</
html
>

החלק המסומן בירוק הוא תוצאה של התצוגה Index.cshtml והחלק המסומן באפור הינו תוצאה של התצוגה Layout.cshtml_

פתח את הקובץ Views\Shared\_Layout.cshtml והוסף header ו-footer:

<body>
    <div class="header">
        Address Book
        <hr />
    </div>

    @RenderBody()

    <div class="footer">
        <hr />
        Address Book
    </div
>
</
body
>

הרץ את התוכנית ובחן את התצוגות השונות. שים לב כיצד כולן "נהנות" מה-HTML שהגדרת בקובץ ה-layout

image

וכן,

image

במקרים מסוימים אנו מעוניינים לאפשר לתצוגות השונות להחדיר HTML נוסף מעבר ל-RenderBody בתוך HTML המסגרת. לדוגמא, נניח שהתצוגה Views\Group\Create.cshtml מעוניינת להשתמש בקוד JavaScript על מנת למקם את סמן העריכה על תיבת הטקסט Name.

כידוע קישור לקובץ JavaScript רצוי שיישב בתוך תגית ה-Head. הבעיה היא שלתצוגה Create אין גישה לתגית זו (היא מוגדרת בקובץ ה-Layout). על מנת לפתור את הבעיה פתח את קובץ ה-Layout והוסף Section חדש תחת תגית ה-head:

<head>
...

@RenderSection("head", false)
</head
>

פתח עכשיו את קובץ התצוגה Views\Group\Create.cshtml והוסף התייחסות ל-Section החדש שזה עתה הגדרנו:

@section head
{

}

צור את הקובץ Scripts/Group/Create.js:

/// <reference path="../jquery-1.4.4-vsdoc.js" />

jQuery(document).ready(function ()
{
  jQuery("#Name").focus().select();
});

הקוד משתמש בפונקציות העזר של jQuery. אנו נדבר על jQuery בהרחבה בהמשך המדריך. בינתיים פשוט העתק את הקוד לתוך הקובץ. חזור לקובץ התצוגה וגרור את הקובץ Create.js מתוך ה-Solution Explorer אל תוך קובץ התצוגה כך שייוצר הקוד הבא:

@section head
{

    <script src="../../Scripts/Group/Create.js" 
type="text/javascript"></script>
}

הרץ את התוכנית ובחן את תצוגת ה-Create. שים לב כיצד סמן העריכה נמצא על תיבת הטקסט Name:

image

 

בפרק זה למדנו כיצד ניתן לעדכן את תצוגת הפריסה של התוכנית וליצור בתוכה Sections חדשים אשר מאפשרים לתצוגות האחרות ל"החדיר" HTML משלהם לתוך ה-HTML הראשי. בפרק הבא נלמד על עוד טכניקה המאפשרת לשתף HTML זהה בין תצוגות שונות.

תגיות: מדריך‏  /  פיתוח‏  /  צד שרת‏  /  ASP.NET MVC‏  /  .net‏  

תגובות בפייסבוק

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות