Comment déclarer une variable locale dans Razor?
Je développe une application web dans asp.net mvc 3. Je suis très nouveau pour elle. Dans une vue utilisant razor, je voudrais déclarer certaines variables locales et l'utiliser sur toute la page. Comment cela peut-il être fait?
Il semble plutôt trivial de pouvoir faire l'action suivante:
@bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);
@if (isUserConnected)
{ // meaning that the viewing user has not been saved
<div>
<div> click to join us </div>
<a id="login" href="javascript:void(0);" style="display: inline; ">join</a>
</div>
}
Mais cela ne fonctionne pas. Est-ce possible?
6 réponses
Je pense que vous étiez assez proche, essayez ceci:
@{bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);}
@if (isUserConnected)
{ // meaning that the viewing user has not been saved
<div>
<div> click to join us </div>
<a id="login" href="javascript:void(0);" style="display: inline; ">join</a>
</div>
}
Je pense que la variable devrait être dans le même bloc:
@{bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);
if (isUserConnected)
{ // meaning that the viewing user has not been saved
<div>
<div> click to join us </div>
<a id="login" href="javascript:void(0);" style="display: inline; ">join</a>
</div>
}
}
Vous pouvez également utiliser:
@if(string.IsNullOrEmpty(Model.CreatorFullName))
{
...your code...
}
Pas besoin d'une variable dans le code de
Si vous cherchez une variable int, qui s'incrémente au fur et à mesure que le code boucle, vous pouvez utiliser quelque chose comme ceci:
@{
int counter = 1;
foreach (var item in Model.Stuff) {
... some code ...
counter = counter + 1;
}
}
Pas une réponse directe au problème de L'OP, mais cela peut vous aider aussi. Vous pouvez déclarer une variable locale à côté d'un code html dans une portée sans problème.
@foreach (var item in Model.Stuff)
{
var file = item.MoreStuff.FirstOrDefault();
<li><a href="@item.Source">@file.Name</a></li>
}
Pour déclarer un var accessible sur la page....haut de la page fonctionne généralement. implicite ou explicitement votre choix.
@{
//implicit
var something1 = "something";
//explicit
string something2 = "something";
}
@something1 //to display on the page
@something2 //to display on the page