TOC

This article has been localized into Romanian by the community.

Razor:

Șabloane de delegați

Funcția de „șabloane de delegați” în Razor vă permite să definiți o bucată de markup și apoi să o utilizați pentru a reprezenta un obiect specific pe o pagină. Aceasta este o unealtă grozavă atunci când doriți să reprezentați, de exemplu, una din clasele dvs. în multiple locuri în interiorul View-ului dvs. Poate fi de asemenea o modalitate extraordinară pentru a separa mari bucăți de markup din logica View-ului dvs. ce vă permite să citiți și să mențineți mai ușor View-uri enorme.

Atunci când definiți șabloane de delegați, veți folosi un delegat Func - ce poate arăta în felul următor:

Func<dynamic, object> movieTemplate = @<div>@item.Title [@item.ReleaseDate.ToShortDateString()]</div>;

În prima jumătate, înainte de semnul egal, s-a creat delegatul movieTemplate. În partea două, se specifică șablonul markup-ului ce va fi folosit. Observați că s-a folosit o variabilă numită item - este oferită în delegat și are tipul dinamic, asta înseamnă că se pot accesa membrii (ex: Title) ce nu sunt verificate la compilare, dar sunt validate la timpul de execuție, unde este de așteptat să existe în obiectul transmis delegatului - dacă nu, o excepție va fi aruncată! Se va trece în obiecte de tip Movie, o clasă simplă care a fost folosită anterior în acest tutorial:

public class Movie
{
    public string Title { get; set; }
    public DateTime ReleaseDate { get; set; }
}

Cu șablonul de delegat pus la locul lui, îl puteți folosi, de exemplu într-o buclă. Observați cum puteți chema și trimite delegatul în obiectul Movie, în loc să definiți markup-ul în buclă:

@foreach(var movie in movies)
{
    @movieTemplate(movie)
}

Atunci când populați colecția movies, folosită în buclă, cu anumite date de test, rezultatul generat va arăta în felul următor:

<div>The Godfather [24-03-1972]</div>
<div>Forrest Gump [06-07-1994]</div>
<div>Fight Club [15-10-1999]</div>

Și mai jos aveți un exemplu complet, ce include date de test despre filme, pentru ca să experimentați:

@using HelloMVCWorld.Models
@{
    ViewData["Title"] = "TemplatedDelegate";

    Func<dynamic, object> movieTemplate = @<div>@item.Title [@item.ReleaseDate.ToShortDateString()]</div>;

    List<Movie> movies = new List<Movie>();
    movies.Add(new Movie() { Title = "The Godfather", ReleaseDate = new DateTime(1972, 3, 24) });
    movies.Add(new Movie() { Title = "Forrest Gump", ReleaseDate = new DateTime(1994, 7, 6) });
    movies.Add(new Movie() { Title = "Fight Club", ReleaseDate = new DateTime(1999, 10, 15) });

}

@foreach(var movie in movies)
{
    @movieTemplate(movie)
}

În concluzie

Sintaxa șabloanelor de delegați regăsită în Razor facilitează definirea, de către dvs., a șabloanelor de tip markup ce se pot reutiliza în multiple locuri în View-urile dvs.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!