Как объявить локальную переменную в 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>
}

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

262
задан vondip 06 июля '11 в 22:16
источник поделиться
6 ответов

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

@{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>
}
389
ответ дан Tomas Jansson 06 июля '11 в 22:18
источник поделиться

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

@{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>
    }
    }
40
ответ дан Khash 09 февр. '12 в 3:07
источник поделиться

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

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

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

16
ответ дан marcel 25 авг. '13 в 15:13
источник поделиться

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

@{
  int counter = 1;

  foreach (var item in Model.Stuff) {
    ... some code ...
    counter = counter + 1;
  }
} 
8
ответ дан Brian 12 июня '15 в 21:05
источник поделиться

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

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

    <li><a href="@item.Source">@file.Name</a></li>
}
1
ответ дан aloisdg 21 марта '17 в 18:56
источник поделиться

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

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


            @something1 //to display on the page
            @something2 //to display on the page
0
ответ дан d384 22 нояб. '17 в 1:33
источник поделиться

Другие вопросы по меткам или Задайте вопрос