显式 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
已创建。
- 预计:
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>
我想创建以下标记
<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
已创建。
- 预计:
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>