Je développe une application Web dans asp.net mvc 3. Je suis très novice. Dans une vue utilisant rasoir, j'aimerais déclarer certaines variables locales et les utiliser sur toute la page. Comment cela peut-il être fait?
Il semble assez trivial de pouvoir effectuer 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 ça ne marche pas. Est-ce possible?
Je pense que vous étiez assez proches, essayez ceci:
@{bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);}
@if (isUserConnected)
{ // meaning that the viewing user has not been saved so continue
<div>
<div> click to join us </div>
<a id="login" href="javascript:void(0);" style="display: inline; ">join here</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 aussi utiliser:
@if(string.IsNullOrEmpty(Model.CreatorFullName))
{
...your code...
}
Pas besoin d'une variable dans le code
Si vous recherchez une variable int, une variable qui incrémente la boucle de code, vous pouvez utiliser quelque chose comme ceci:
@{
int counter = 1;
foreach (var item in Model.Stuff) {
... some code ...
counter = counter + 1;
}
}
Ce n'est pas une réponse directe au problème de OP, mais cela peut aussi vous aider. 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>
}
déclarer qu'une variable est accessible sur la page .... le haut de la page fonctionne normalement. implicite ou explicite votre choix.
@{
//implicit
var something1 = "something";
//explicit
string something2 = "something";
}
@something1 //to display on the page
@something2 //to display on the page