TOC

This article has been localized into Romanian by the community.

Razor:

Funcții locale

Într-un articol anterior, s-a discutat cum Razor permite să definiți un bloc de cod în View-urile dvs., în felul următor:

@{
    // C# code goes here...
    // As many lines as you want!
}

Puteți folosi aceste blocuri de cod pentru absolut orice poate C# - puteți chiar defini funcții locale! Asta este foarte tare, pentru că o funcție Razor locală vă permite să includeți markup, să creați mici funcții șablon. Aceasta este folositoare în anumite situații, cum puteți observa în exemplul următor, unde dorim să generăm aceași bucată de markup de multiple ori. Definind o funcție locală este ca și cum definim o metodă class, cu excepția că o funcție locală nu are un modificator de acces (public, private etc.). Așa va arăta:

@{
    void RenderUserInfo(HelloMVCWorld.Models.WebUser user)
    {
<div class="user-info">
    @user.LastName, @user.FirstName [@user.Birthday.ToShortDateString()]
</div>
    }
}

Observați eleganța cu care Razor vă permite să amestecați cod C# și HTML. Acest exemplu a fost creat foarte simplu, din punct de vedere markup, intenționat, dar poate fi cât de complicat doriți!

Mai jos este un exemplu complet despre cum definiți și utilizați această funcție locală:

@model List<HelloMVCWorld.Models.WebUser>
@{
    ViewData["Title"] = "Functions";
}

<h1>Functions</h1>

@{
    void RenderUserInfo(HelloMVCWorld.Models.WebUser user)
    {
<div class="user-info">
    @user.LastName, @user.FirstName [@user.Birthday.ToShortDateString()]
</div>
    }

    <h2>Users [sorted by first name]</h2>
    foreach(var user in Model.OrderBy(x => x.FirstName))
    {
RenderUserInfo(user);
    }

    <h2>Users [sorted by last name]</h2>
    foreach(var user in Model.OrderBy(x => x.LastName))
    {
RenderUserInfo(user);
    }
}

Mulțumită unei funcții locale (RenderUserInfo), puteți afișa aceeași listă de două ori, cu o sortare diferită și fără să scrieți aceeași markup de două ori!

Funcții locale cu o valoare returnată

Veți observa că funcția RenderUserInfo() nu returnează nimic (este declarată cu void (ro: nimic) ca valoare returnată), dar nu este neapărat să funcționeze așa. Funcția Razor locală a dvs. poate returna cu ușurință o valoare, precum orice funcție/metodă C#. Aceasta poate fi folositoare în anumite situații, de exemplu atunci când doriți să faceți un calcul complicat în mai multe locuri în codul dvs. Priviți exemplul de mai jos:

@{ 
    int GetTheAnswerToLifeTheUniverseEverything(int x, int y)
    {
return x * y;
    }
}
<div>
    The answer to life, the universe and everything: @GetTheAnswerToLifeTheUniverseEverything(7, 6)
</div>

Acum, binențeles, aceasta este un exemplu jovial, în mod normal funcția va face ceva mai interesant și complicat ca o simplă multiplicare, dar aceasta demonstrează cât de ușor se definesc și folosesc funcțiile locale cu o valoare returnată. Ieșirea va arăta în felul următor:

<div>
    The answer to life, the universe and everything: 42
</div>

În concluzie

Funcțiile Razor locale vă permit să definiți cu ușurință funcții ce pot fi folosite în View-ul curent, de exemplu pentru a efectua aceeași acțiune de multiple ori sau să fie folosite ca și șablon.


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!