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?
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>
}
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>
}
}
Sie können auch verwenden:
@if(string.IsNullOrEmpty(Model.CreatorFullName))
{
...your code...
}
Keine Notwendigkeit für eine Variable im Code
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;
}
}
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>
}
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