简体   繁体   中英

C# Razor Syntax inside a string

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, ie 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM