Razor syntax inside attributes of html elements (ASP MVC 3)
I have a table with repeating customer rows, I would like to add the customer ID to the ID attribute of my table rows like this:
<tr id="row<customer id>"></tr>
I try adding this code:
@foreach(var c in Model) {
<tr id="[email protected]"></tr>
}
Which gives me the following output:
<tr id="[email protected]"></tr>
<tr id="[email protected]"></tr>
etc.
But I would like it to be:
<tr id="row1"></tr>
<tr id="row2"></tr>
etc.
I also tried to add <tr>row@{c.id}</tr>
but it did not work..
Solution 1:
have you tried <tr>row@(c.id)</tr>
?
The actual reason why this doesn't work is because your [email protected]
matches the regex for an email address. So the parser assumes it's an email and not actually an attempt to call code. The reason row@{c.id}
doesn't work is because the @{}
doesn't output and is meant to contain blocks of code.
When in doubt you should use @()
as it will force what's contained between the ()
to be parsed as code.