it-swarm.com.de

Wie deklariert man eine lokale Variable in Razor?

Ich entwickle eine Webanwendung in asp.net mvc 3. Ich bin sehr neu darin. In einer Ansicht mit Rasiermesser möchte ich einige lokale Variablen deklarieren und auf der gesamten Seite verwenden. Wie geht das?

Es scheint ziemlich trivial zu sein, die folgenden Aktionen ausführen zu können:

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

Das geht aber nicht. Ist das möglich?

327
vondip

Ich denke du warst ziemlich nah dran, versuch das:

@{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

Ich denke, die Variable sollte im selben Block sein:

@{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

Sie können auch verwenden:

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

Keine Notwendigkeit für eine Variable im Code

18
marcel

Wenn Sie nach einer int-Variablen suchen, die sich während der Codeschleifen erhöht, können Sie Folgendes verwenden:

@{
  int counter = 1;

  foreach (var item in Model.Stuff) {
    ... some code ...
    counter = counter + 1;
  }
} 
11
Brian

Keine direkte Antwort auf das Problem von OP, aber es kann Ihnen auch helfen. Sie können problemlos eine lokale Variable neben einem HTML-Code in einem Gültigkeitsbereich deklarieren.

@foreach (var item in Model.Stuff)
{
    var file = item.MoreStuff.FirstOrDefault();

    <li><a href="@item.Source">@file.Name</a></li>
}
7
aloisdg

ein var deklarieren, auf das über die Seite zugegriffen werden soll .... der Anfang der Seite klappt normalerweise. implizit oder explizit Ihre Wahl.

          @{
               //implicit
               var something1 = "something";
               //explicit
               string something2 = "something";
          }


            @something1 //to display on the page
            @something2 //to display on the page
2
d384