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

时间:2019-01-22 01:36:51

标签: asp.net asp.net-mvc razor-pages

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

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

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

2 个答案:

答案 0 :(得分:2)

使用您当前的代码,razor认为表达式Model.Id.jpg是它需要执行的某些服务器端代码。因此,您将收到一条错误消息,指出没有这样的方法/属性称为{{1} },无论jpg的类型是什么,或者没有该类型的扩展方法Id

要解决此问题,您应使用显式的jpg(来包装C#表达式

)

这告诉剃须刀<div class='card-img'> <img src='images/User-@(Model.Id).jpg'/> </div> 是它需要执行的C#表达式。执行该表达式的输出将在HTML中pe呈现。例如,如果Model.Id的值为Model.Id,则呈现的输出将为

100

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

答案 1 :(得分:1)

尝试使用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的成员,因为第二个点(.)被视为{{3 }}。