437 Stimmen

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 Razor, möchte ich einige lokale Variablen zu deklarieren und verwenden Sie es über die gesamte Seite. Wie kann man das machen?

Es scheint ziemlich trivial zu sein, die folgende Aktion durchfü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>
}

Aber das funktioniert nicht. Ist das möglich?

631voto

Tomas Jansson Punkte 21651

Ich glaube, Sie waren ziemlich nah dran, versuchen Sie dies:

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

0 Stimmen

Oh, verdammt, ich habe alles Mögliche versucht, nur nicht das. Danke Tomas!

1 Stimmen

Wie macht man das in VB.NET?

9 Stimmen

Oh, ich habe es selbst herausgefunden: @Code .. End Code anstelle von @{ .. }

63voto

Khasha Punkte 1439

Ich denke, die Variable sollte im selben Block stehen:

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

0 Stimmen

Das scheint der Fall zu sein, zumindest in MVC3.

1 Stimmen

Ausgezeichnet! Haben Sie eine Idee, wie Sie die Variable dann verwenden würden? isUserConnected wieder weiter unten auf der Seite?

0 Stimmen

@SharpC Sobald Sie eine Variable auf diese Weise deklarieren, ist sie im Rest der .cshtml-Datei verfügbar. Später in der Datei könnten Sie etwas tun wie @if (isUserConnected) { /* stuff if connected */ } o <div>Connected? @isUserConnected</div> (dies funktioniert besser mit Zeichenketten). Außerhalb dieser Datei ist sie jedoch nicht verfügbar (z. B. müssen Sie sie separat in partiellen Dateien deklarieren).

18voto

marcel Punkte 315

Sie können auch verwenden:

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

Keine Notwendigkeit für eine Variable im Code

10 Stimmen

Dies gibt keine Antwort auf die Frage.

18voto

aloisdg Punkte 18811

Das ist zwar keine direkte Antwort auf das Problem des Auftraggebers, aber vielleicht hilft es auch Ihnen. Sie können eine lokale Variable neben etwas html innerhalb eines Bereichs ohne Probleme deklarieren.

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

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

15voto

Brian Punkte 3583

Wenn Sie eine int-Variable suchen, die inkrementiert wird, wenn der Code eine Schleife durchläuft, können Sie etwas wie dieses verwenden:

@{
  int counter = 1;

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X