C# 基于模型元素的图像动态渲染

C# 基于模型元素的图像动态渲染,c#,html,image,bootstrap-4,razor-pages,C#,Html,Image,Bootstrap 4,Razor Pages,我有一个视图模型,其中包含一个字符串列表,我想用它动态地将一些图像渲染到razor视图 公共列表状态{get;set;}=new List(){“ACT”、“NSW”、“NT”、“QLD”、“SA”、“TAS”、“VIC”、“WA”} 这就是我正在做的: @foreach (var state in Model.States) { var stateImage = $"~/Images/{state}.jpg"; <div class="

我有一个视图模型,其中包含一个字符串列表,我想用它动态地将一些图像渲染到razor视图

公共列表状态{get;set;}=new List(){“ACT”、“NSW”、“NT”、“QLD”、“SA”、“TAS”、“VIC”、“WA”}

这就是我正在做的:

@foreach (var state in Model.States)
  {
    var stateImage = $"~/Images/{state}.jpg";

     <div class="col-lg-4 col-xl-4 col-md-6 pb-4 card-deck">
            <div class="card">
                   <img src="@stateImage" class="card-img" />
            </div>
     </div>
}

@foreach(Model.States中的变量状态)
{
var stateImage=$“~/Images/{state}.jpg”;
}
我遇到的问题是图像无法渲染。如果我硬编码路径(“~/Images/ACT.jpg”用于
示例)然后它工作正常,图像加载,如果我通过调试器观察它,甚至只是在div上显示它,那么它显示的内容与我硬编码的内容完全相同,但它仍然无法呈现图像,我不确定原因。

需要以与代码相同的方式对
~
进行评估。如果将其分配给字符串变量,则无法将其解析为Razor语法。在您的示例中,无论如何都不需要使用字符串变量

试试这个:

@foreach (var state in Model.States)
{
     <div class="col-lg-4 col-xl-4 col-md-6 pb-4 card-deck">
            <div class="card">
                   <img src="~/Images/@stateImage" class="card-img" />
            </div>
     </div>
}
@foreach(Model.States中的变量状态)
{
}

谢谢你,这很好用,我现在觉得这么简单的修复很傻!