web-dev-qa-db-fra.com

Déclarez la variable dans Razor

Je veux ajouter une variable en dehors de foreach et je devrais accéder à cette variable à l'intérieur de la boucle foreach

<table class="generalTbl">
    <tr>
        <th>Date</th>
        <th>Location</th>
    </tr>
    @int i;
    @foreach (var item in Model)
    {
      i=0;
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.DueDate)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.location)
            </td>
        </tr>
    }
</table>

L'exemple ci-dessus, j'ai ajouté @int i; en dehors de la foreach et j'ai essayé d'y accéder à l'intérieur de la foreach comme i = 0; Mais il montre "Le nom 'i' n'existe pas dans le contexte actuel"

Comment puis-je accéder à la variable à l'intérieur de la boucle?

12
Golda
<table class="generalTbl">
    <tr>
        <th>Date</th>
        <th>Location</th>
    </tr>
    @{
        int i = 0;//value you want to initialize it with 

        foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.DueDate)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.location)
                </td>
            </tr>
        }
    }
</table>
21
Hossain Muctadir

Vous devez utiliser un bloc de code:

@{
    int i;
}

La façon dont Razor analysera votre déclaration telle qu'elle est écrite est @int suivi d'un littéral i. Par conséquent, il essaiera de sortir la valeur de int, suivie du mot i.

4
lc.

Utilisez un bloc de code:

Exemple:

@{int i = 5;}

Appelez ensuite la variable dans votre boucle:

@foreach(var item in Model)
{
    //i exists here
}
3
biddano

Il est généralement préférable de déclarer vos variables en haut de la vue. Vous pouvez créer une variable comme celle-ci, avant le @foreach:

@{
    int i = 0;
}
2
jacqijvv