#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
, так как их значения не меняются, но нет необходимости заставлять скрипт работать,