Razor syntax inside attributes of html elements (A

2019-03-08 12:25发布

问题:

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="row@c.id"></tr>
}

Which gives me the following output:

<tr id="row@c.id"></tr>
<tr id="row@c.id"></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..

回答1:

have you tried <tr>row@(c.id)</tr>?

The actual reason why this doesn't work is because your row@c.id 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.