Как объявить локальную переменную в Razor?

Я разрабатываю веб-приложение в asp.net mvc 3. Я новичок в этом. В представлении с использованием бритвы я хотел бы объявить некоторые локальные переменные и использовать их на всей странице. Как это можно сделать?

Кажется довольно тривиальным, чтобы иметь возможность выполнить следующее действие:

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

Но это не работает. Возможно ли это?

Ответ 1

Я думаю, что вы были довольно близки, попробуйте это:

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

Ответ 2

Я думаю, что переменная должна находиться в одном блоке:

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

Ответ 3

Вы также можете использовать:

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

Нет необходимости в переменной в коде

Ответ 4

Если вы ищете переменную int, которая увеличивается в виде циклов кода, вы можете использовать что-то вроде этого:

@{
  int counter = 1;

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

Ответ 5

Не прямой ответ на проблему с ОП, но это тоже может вам помочь. Вы можете объявить локальную переменную рядом с некоторым html внутри области без проблем.

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

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

Ответ 6

чтобы объявить var, который будет доступен по всей странице. Верх страницы обычно работает. подразумеваемый или явно ваш выбор.

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


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