在 ASP.NET Razor 中,如何在字符串中包含模型属性?

In ASP.NET Razor, how to include model attribute in a string?

有没有一种干净的方法可以在剃刀页面中包含字符串替换?

也就是说,我有一些看起来像这样但不起作用的剃刀代码。我觉得我少了一些标点符号。

<div class='card-img'>
    <img src='images/User-@Model.Id.jpg'/>
</div>

使用您当前的代码,razor 认为表达式 Model.Id.jpg 是它需要的一些服务器端代码 execute.So 您将收到一条错误消息,指出没有这样的 method/property 在 Id 的任何类型上调用 jpg,或者在该类型中没有名为 jpg 的扩展方法。

要解决此问题,您应使用显式 ()

包装您的 C# 表达式
<div class='card-img'>
    <img src='images/User-@(Model.Id).jpg'/>
</div>

这告诉 razor Model.Id 是它需要执行的 C# 表达式。执行该表达式的输出将在 HTML.For 示例中呈现,如果 Model.Id 的值为 100,则呈现的输出将是

<img src="images/User-100.jpg">

现在根据您存储图像的位置调整您的路径(src 值)。

尝试使用 Razor 代码块 @(...)@Url.Content() 帮助程序进行字符串连接:

@* Code block string concatenation *@
<img src='images/User-@(Model.Id).jpg'/>

@* Content helper string concatenation *@
<img src='@Url.Content("images/User-" + Model.Id + ".jpg")'/>

请注意 @Model.Id.jpg 不起作用,因为 Id 属性 没有名为 jpg 的成员,因为第二个点 (. ) 被视为 member access expression.