【问题标题】:MVC Razor C# Variable used for HTML img tag src用于 HTML img 标签 src 的 MVC Razor C# 变量
【发布时间】:2017-11-24 13:29:03
【问题描述】:

我有很多图像要显示,因此我使用动态局部视图来减少不必要的代码。这是我的部分观点:

@{ string[] imgs = { 
    "src='~/Content/images/1.png'", 
    "src='~/Content/images/2.png'", 
    "src='~/Content/images/3.png'" 
};

@foreach (var img in imgs) { *HTML GOES HERE* }

foreach 循环内的 HTML:

<div class="thumbnail-border">
    <img id="modalImage" class="thumbnail-lg" @Html.Raw(img) />
</div>

奇怪的是,如果我把“src”换成“alt”,alt 就起作用了。但是将 src 的变量作为图像路径不起作用。所以我的问题是: 如果我想使用 foreach 循环遍历字符串数组(图像路径)以用于 my ,我该怎么做?

【问题讨论】:

  • 为了澄清一下,顺便说一下,图像路径确实有效。我事先只使用 src="" 属性中的图像路径字符串进行了尝试。
  • 定义“不起作用”。它做什么?这里生成的客户端 HTML 是什么?如果客户端代码在路径中包含~,那么这肯定不会“工作”,因为该路径对浏览器没有任何意义。您需要先将其转换为客户端可用的路径,使用类似 Server.MapPath() 的内容。
  • 工作正常(显示我的图像)。但是使用@Html.Raw(img) 只显示常见错误图像(左上角带有破碎小方块的空白图像)
  • 我只是认为使用变量将完全相同的文本字符串插入 标签 应该 工作。但事实并非如此,我想知道为什么
  • 那是浏览器中实际的客户端 HTML 吗?还是您在 Visual Studio 中放入的代码?查看浏览器中的实际内容。我怀疑该框架正在取代该路径。但是在以您尝试的方式构建时不会替换它,因此您可能需要手动替换它。

标签: c# html asp.net-mvc-4 razor


【解决方案1】:

忘记@Html.Raw(img) - 你在这里不需要它。仅使用路径(没有src 属性):

@{ 
    var imgs = { 
        "~/Content/images/1.png", 
        "~/Content/images/2.png", 
        "~/Content/images/3.png" 
    };
}

@foreach (var img in imgs) 
{ 
    <img src="@Url.Content(img)" alt="tbd" />
}

Url.Content(img)用于解析图片的根路径~/

【讨论】:

  • @MattD 很高兴为您提供帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2016-01-03
相关资源
最近更新 更多