显式 Razor 表达式在 @foreach 输出模型 属性 中不起作用并与文本连接

Explicit Razor expressions not working in @foreach output model property and concatenate with text

我想创建以下标记

     <tr onclick="toggle(110)" data-order-id-110=110><td>foo</td></tr>

重要的部分是 data-attribute data-order-id-110=110。对于我模型中的每个项目,id(此处为 110)应写为包含 id 的数据属性,在本例中为 110.

据我了解Explicit Razor expressions

Any content within the @() parenthesis is evaluated and rendered to the output.

应该可以写了

// this code
data-order-id-@(@order.Id)=@order.Id

// actual returns 
data-order-id@(@order.id)="1"

// expected
data-order-id-1="1"
  

所以除了@(@)我也试过@{=@}这样

 data-order-id-@(@order.Id)=@order.Id
 data-order-id-@{=@order.Id}=@order.Id

两者均无效,请参见下文。

我的代码

我试过了

  <tr onclick="toggleOrderDetails(@order.Id)" 
      data-order-id-@(order.Id)=@order.Id>

哪个returns

 <tr onclick="toggleOrderDetails(1)" data-order-id-@(order.id)="1">
       .....
        </tr>

也尝试过

 @foreach (var order in Model.Orders)
 {
     <tr onclick="toggleOrderDetails(@order.Id)" data-order-id-@{=@order.Id}=@order.Id>
            <td>@order.Id</td>
            <td>@order.CustomerId</td>
            <td>@order.OrderDate</td>
     </tr> 
 }

html输出

 <tr onclick="toggleOrderDetails(1)" data-order-id-@{="1}=1">
            <td>1</td>
            <td>1</td>
            <td>26.08.2021 10:30:00</td>
  </tr>

如您所见,data-order-id-1=1 字符串 data-order-id-@{="1}=1 已创建。

其他人向我们提到过@:但这不起作用

已安装版本

dotnet --info

returns

 .NET Core SDK (reflecting any global.json):
      Version:   3.1.118     Commit:    42170158ee

 Host (useful for support):
      Version: 3.1.18        Commit:  5d3919d34e

 .NET Core SDKs installed:
      3.1.118 [C:\Program Files\dotnet\sdk]

 .NET Core runtimes installed:
      Microsoft.AspNetCore.App 3.1.18 
      Microsoft.NETCore.App 3.1.18 
      Microsoft.WindowsDesktop.App 3.1.18 

class MvcServiceCollectionExtensions 的组装是

#region Assembly Microsoft.AspNetCore.Mvc
         , Version=3.1.0.0, Culture=neutral
         , PublicKeyToken=adb9793829ddae60
         // Microsoft.AspNetCore.Mvc.dll
#endregion

问题

我需要什么才能将 html 数据属性与来自模型

的 属性 连接起来

我是这样解决的

@foreach (var order in Model.Orders)
{
    string attribute = "data-order-id-"+@order.Id;
    <tr onclick="toggleOrderDetails(@order.Id)" @(attribute)=@order.Id>
}

这个returns这个标记

 <tr onclick="toggleOrderDetails(1)" data-order-id-1="1">
       ....
 </tr>