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?

299
demandé sur Owen Pauling 2011-07-06 23:16:32

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>
}
436
répondu Tomas Jansson 2011-07-06 19:18:26

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>
    }
    }
44
répondu Khasha 2012-02-09 00:07:10

Vous pouvez également utiliser:

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

Pas besoin d'une variable dans le code de

17
répondu marcel 2015-03-12 12:37:29

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;
  }
} 
9
répondu Brian 2015-06-12 18:05:39

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>
}
3
répondu aloisdg 2017-03-28 08:37:38

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
0
répondu d384 2017-11-21 22:33:41