This is the Code I'm having problems with:
@{int i = 1;}
@foreach (var item in Model)
{
@:<ul id="sortablei" class='droptrue'>
i++;
}
How can I use i in the id sortablei?
I tried: @i or @{i} but it seems without a space before the i its not working.
I couldn't find an answer to my problem in the Razor Syntax Reference so I'm a bit clueless right now.
Brackets:
@:<ul id="sortable@(i)" class='droptrue'>
The brackets here scope the razor expression; in many cases they aren't required, however they are necessary when:
- the expression (on the right) is non-trivial (spaces. etc) and needs help to scope it
- where without it, it looks like an email address, i.e.
abc@def
- this has special handling to avoid breaking pages with email addresses in them
something like this:
@model System.Generic.Collections.List<MyNameSpace.Product>
@{
int i = 1;
string sortablei = "abc",
droptrue = "abc-cls";
}
<ul id="@sortablei" class="@droptrue">
@foreach (var item in Model)
{
<li>@item.Qty x @item.Name</li>
i++;
}
</ul>
Here's a quick reference for your knowledge.
Seams like I didn't got it right,
as Mark said, all you need to do is surround the variable with brackets like
sortable@(i)
I hope the reference is somewhat useful, as your particular problem can be found in Explicit Expression example