2017-10-18 17 views
0

Je commence à travailler avec le framework web asp.net. J'ai un fichier .cshtml que quelqu'un a déjà écrit et il contient un peu de code que je ne peux pas trouver des informations sur:.cshtml Fichier contenant 'at' symbole avec accolades; Qu'est-ce que c'est?

@{ 
    ViewData["Title"] = "Watching " + Model.EventName; 
    int eventId = Model.Id; 
} 

D'après ce que je peux dire, le code ci-dessus crée C# variables qui peuvent être référencées par javascript interne

<script type="text/javascript> 
    someJavaScriptFunction(@eventId); 
</script> 

Comment s'appelle cette 'technique'?

+1

C'est le rasoir, ou le moteur de mise en page. Google ASP.NET Razor et vous le trouverez. –

+0

À l'intérieur des parenthèses, vous pouvez utiliser le code C#/Razor, comme si vous déclariez un 'int eventId = Model.Id;' comme vous l'avez fait. – nurdyguy

+2

Le JavaScript ne fait pas référence à ces variables. '@ eventId' renvoie la valeur de' eventId' à la page qui est servie. – JLRishe

Répondre

2

Si vous affichez le Razor syntax reference vous verrez que

Razor prend en charge C# et utilise le symbole @ pour passer du HTML au C#.

donc quand vous voyez

@{ } 

Il est un C# (côté serveur uniquement) bloc de code. Il est important de comprendre que tout cshtml (C#) s'exécute en premier et que seul html/css/javascript pur frappe le client. Ainsi, le code comme suit n'a pas de sens:

@{ 
    var a = 1; 
} 

function blah(){ 
    var b = @a; 
    b++; 
    @a = b; 
} 

car il compilera littéralement:

function blah(){ 
    var b = 1; 
    b++; 
    1 = b; 
} 
2

Quel est ce code entre @{ }?

@{ } délimite une section de code C# que vous pouvez placer dans le fichier .cshtml, qui exécutera comme la page est rendue. Dans ce cas, il place une entrée dans la collection ViewData et attribue une valeur à la variable eventId.

Comment une variable C# est-elle utilisée dans du code JavaScript?

Ici encore, le @ indique le code rasoir. @variable Affichera la valeur de variable à la page, en supposant eventId avait la valeur 12, la page serait effectivement rendu avec:

<script type="text/javascript> 
    someJavaScriptFunction(12); 
</script> 
0

Il n'y a pas vraiment un nom pour la technique autre que « sortie dynamique de javascript discussion avec Razor et C# '.

1

de votre description Je suis en supposant que le @ {} est pas vraiment votre question principale, donc iv a décidé d'expliquer le contenu dans

le vidéotex et ou ViewBag sont des objets dynamiques, cela signifie que vous pouvez définir les propriétés des objets dans la vue ou le contrôleur, ... l'objet modèle est l'objet que vous décidez de transmettre à la vue pour le rendu.

essentiellement vidéotex et ou ViewBag vous permettent de définir les valeurs qui leur sont dans la vue ou dans le contrôleur,

donc:

ViewData["Title"] = "Watching " + Model.EventName; 

sera définir la propriété de titre à la valeur chaîne correspondante, la ViewBag La propriété .title est généralement dans layout.cshtml - donc une fois que cette vue est passée depuis le contrôleur, la valeur du titre sera définie sur "Watching" + Model.EventName;

franchement son important parce que - vous pouvez définir les propriétés à la volée après d'autres vues sont appelées

model.ID - est l'id de l'objet que vous passez à la vue - donc si vous passez l'objet vidéo pour afficher il va rendre les propriétés enregistrées de cet objet

contrôleur

->

movie model = new movie() {title = 'Tommy boy'}; 
view(model) 

Voir ->

<html><p>@Model.title <p> </html> is = <html><p>Tommy boy</p></html> 

https://msdn.microsoft.com/en-us/library/system.web.mvc.controllerbase.viewbag(v=vs.118).aspx