Asp.net mvc 3 在Razor中混合代码和标记

Asp.net mvc 3 在Razor中混合代码和标记,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我们能做些类似的事情吗 <tr id="prod<%:item.ProductId%>"> 在剃刀生产中 我试过了 <tr id="prod@item.ProductId"> 这是行不通的。它呈现了 我正在寻找- <tr id="prod1234"> 您必须围绕您的特定型号值使用@(),如下所示: <div id="prod@(item.ProductId)"></div> 这是因为prod@item.P

我们能做些类似的事情吗

<tr id="prod<%:item.ProductId%>">

在剃刀生产中

我试过了

<tr id="prod@item.ProductId">

这是行不通的。它呈现了
我正在寻找-

<tr id="prod1234">

您必须围绕您的特定型号值使用
@()
,如下所示:

<div id="prod@(item.ProductId)"></div>


这是因为
prod@item.ProductId
对于解析器来说就像是一个电子邮件地址,默认情况下,解析器会尝试忽略电子邮件地址,这样您就不必做类似于
john@doe.com
这样的傻事,因为电子邮件非常常见,每次都会让人讨厌。因此,从事razor解析器工作的人只是想:“如果它看起来像电子邮件,就忽略它”。这就是为什么你会有这个问题。

是的。something@something.something会导致它的。我们可以在其中加入更多的智能,让它真正理解真实有效的电子邮件地址,但这可能会降低性能,但不会带来太多好处@()告诉解析器“这是全部代码,所以不管发生什么,都要像对待代码一样对待它”。你应该发现你不必经常使用它,考虑到性能损失只是在初始编译时,你可能不会损失太多。此外,我发现我通常使用这种特定模式的频率高于实际的电子邮件地址,因此我不会在此处保存我的击键。:)