在Razor中使用C#6字符串插值正确的方法

use*_*Bee 6 c# asp.net-mvc razor c#-6.0

示例:

 <button data-value="$'{@item.CustomerID}_{@item.CustomerType}'"></button>
Run Code Online (Sandbox Code Playgroud)

结果:

$'{34645}_{71}'
Run Code Online (Sandbox Code Playgroud)

预期:

34645_71
Run Code Online (Sandbox Code Playgroud)

更新:必须启用C#6并为@ smdrager的最后两种技术安装适当的包.在VS2015中>>单击项目菜单>>单击启用6#

smd*_*ger 8

在您提供的示例中,不需要字符串插值.使用标准剃刀语法,您可以获得所需的结果:

<button data-value="@(item.CustomerID)_@item.CustomerType"></button>
Run Code Online (Sandbox Code Playgroud)

哪个会产生<button data-value="34567_123"></button>

插值的等价物将是:

@Html.Raw($"<button data-value='{item.CustomerID}_{item.CustomerType}'></button>")
Run Code Online (Sandbox Code Playgroud)

但是你输掉了HTML编码以防止脚本注入(尽管你正在处理的数据类型似乎不太可能).

编辑:

如果你想变得古怪,你可以混合两者.

<button data-value="@($"{item.CustomerID}_{item.CustomerType}")"></button>
Run Code Online (Sandbox Code Playgroud)

但这更加冗长,难以阅读.

  • 对于那个很抱歉.我纠正了答案.有时您需要使用括号来清除剃刀解析器的混淆. (2认同)