我想创建以下标记
<tr onclick="toggle(110)" data-order-id-110=110><td>foo</td></tr>
重要的部分是数据属性data-order-id-110=110
。对于我的模型中的每个项目,id(这里是110)应该写成一个数据属性,其中包括id
(在本例中为110
)。
根据我对Explicit Razor表达式的理解
@()括号内的任何内容都将被计算并呈现到输出中。
应该可以写
// 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>
返回
<tr onclick="toggleOrderDetails(1)" data-order-id-@(order.id)="1">
.....
</tr>
和also tried
@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
。
- 期望值:
data-order-id-1=1
- 实际:
data-order-id-@{="1}=1
其他人向我们提到了@:
,但这不起作用
dotnet --info
返回.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 Filesdotnetsdk]
.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>
}
返回标记
<tr onclick="toggleOrderDetails(1)" data-order-id-1="1">
....
</tr>