Не удалось получить доступ к переменной на странице razor

#c# #razor-pages

Вопрос:

У меня есть следующая страница razor в моем проекте:

 @using XditProj.Models
@model List<XditProj.Models.UserViewModel>
  <link rel="stylesheet" href="../../wwwroot/css/askStyles.css">
  <link rel="stylesheet" href="../../wwwroot/css/bootstrap.min.css">
<link rel="stylesheet" href="../../wwwroot/css/bootstrap.min.css">

@foreach (UserViewModel user in @Model)
{
  @{
    var currentLocalModel = user.moneyStats;
    var one = "weekly price:";
    string two = "saved from last week:";
    string three = "yearly Spending:";
  };

  <div class="row">
    <div class="col-sm-3">
      <div class="well red">
        <p>@user.UserName </p>
      </div>
    </div>
    <div class="col-sm-9">
      <div class="well neutral">
        <p> @user.status</p>
        <div class="bottom-left-text">
          <span class="label label-default">@one  </span>
          <span class="label label-primary">Total KWH: 200</span>
          <span class="label label-success">Labels</span>
        </div>
      </div>
    </div>
  </div>
}
 

мой вопрос касается строки <span class="label label-default">@one </span> , в которой я пытаюсь получить доступ к переменной one , которую я только что объявил. Но моя ide сходит с ума и не может найти ничего с таким названием.

Почему я не могу получить доступ к переменной?

Ответ №1:

В фигурных скобках C# ( {} ) создает новую область для переменных. Переменные, объявленные во «внутренней» области, недоступны во «внешней» области. Я не вижу необходимости объявлять здесь новую область, поэтому вы можете просто удалить ее:

 @foreach (UserViewModel user in @Model)
{
  var currentLocalModel = user.moneyStats;
  var one = "weekly price:";
  string two = "saved from last week:";
  string three = "yearly Spending:";

  <div class="row">
  ...
 

Вы также можете объявить one , two , и three за пределами foreach , так как их значения не меняются, но нет необходимости заставлять скрипт работать,