web-dev-qa-db-fra.com

Comment déclarer une variable locale dans Razor?

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?

327
vondip

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>
}
484
Tomas Jansson

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>
    }
    }
47
Khasha

Vous pouvez aussi utiliser:

@if(string.IsNullOrEmpty(Model.CreatorFullName))
{
...your code...
}

Pas besoin d'une variable dans le code

18
marcel

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;
  }
} 
11
Brian

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>
}
7
aloisdg

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
2
d384