Почему это представление индекса корзины (двигатель Razor) дает мне ошибки - PullRequest
0 голосов
/ 10 июля 2011

Это не похоже на @ {index ++;}, я пытался @ {int index ++}, @ (index ++), @ (int index ++;)

Этот код не выдавал ошибок при использовании с MVC 2. Вот это дает мне Предупреждения о неоднозначности индекса.

@model CartTest.Models.Cart

@{
    ViewBag.Title = "Index";
}

<h2>Cart Index</h2>


<table width="80%" align="center">


<thead><tr>
<th align="center">Quantity</th>
<th align="left">Item</th>
<th align="right">Price</th>
<th align="right">Subtotal</th>
</tr></thead>

<tbody>


@{int index = 0;}

@foreach (var line in Model.Lines)
{
<tr>
@Html.Hidden("Lines.Index", index);
<td align="center">@Html.TextBox("Lines[" + index + "].Quantity",line.Quantity)</td>
<td align="left">@line.Product.Name</td>
<td align="right">@line.Product.Price</td>
<td align="right">@(line.Quantity * line.Product.Price)</td>
<td align="right">@Html.ActionLink("Remove", "RemoveItem", new { productId = line.Product.ProductID }, null)</td>

</tr>

@{index++;}    

}

</tbody>


<tfoot>


</tfoot>


</table>

1 Ответ

0 голосов
/ 10 июля 2011

Попробуйте вот так:

@{int index = 0;}
@foreach (var line in Model.Lines)
{
    <tr>
       ...
    </tr>
    index++;
}

Теперь это просто для того, чтобы сделать Razor счастливым.Это не решение, которое я рекомендую.Реальное решение, которое я бы порекомендовал вам - это использовать шаблоны редактора:

<table width="80%" align="center">
    <thead>
    <tr>
        <th align="center">Quantity</th>
        <th align="left">Item</th>
        <th align="right">Price</th>
        <th align="right">Subtotal</th>
    </tr>
    </thead>
    <tbody>
        @Html.EditorFor(x => x.Lines)
    </tbody>
    <tfoot>

    </tfoot>
</table>

и внутри соответствующего шаблона редактора строки (~/Views/Shared/EditorTemplates/LineViewModel.cshtml), который будет отображаться для каждого элемента коллекции Line:

@model LineViewModel
<td align="center">
    @Html.TextBoxFor(x => x.Quantity)
</td>
<td align="left">
    @Html.DisplayFor(x => x.Product.Name)
</td>
<td align="right">
    @Html.DisplayFor(x => x.Product.Price)
</td>
<td align="right">
    @Html.DisplayFor(x => x.CalculatedTotalPrice) 
</td>
<td align="right">
    @Html.ActionLink("Remove", "RemoveItem", new { productId = Model.Product.ProductID }, null)
</td>

Видите, больше нет уродливых циклов, слабо типизированных помощников, работы с некоторыми индексами и т. Д. Все работает по соглашениям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...