【问题标题】:ASP.NET MVC4 with ASPX Render Engine: Fill src attribute dynamically带有 ASPX 渲染引擎的 ASP.NET MVC4:动态填充 src 属性
【发布时间】:2016-10-06 10:26:20
【问题描述】:

呈现项目列表我想根据 Type 属性更改项目的图像。 这是代码:

<img src="<%if (item.VolumeType == 1)
                                Url.Content(String.Format("../../Images/DVDDisk.png"));
                            else
                                Url.Content(String.Format("../../Images/harddisk.png")); %>" height="32" width="32" />

但任何图像都会显示,因为检查了我找到的 html:

<img src="" height="32" width="32">

怎么了? 我还不明白将 ASPX 与 MVC 引擎一起使用是否有效,或者它是否是一种不正确的做法并且是最好的 Razor。

谢谢!

【问题讨论】:

  • 试试&lt;img src="@(item.VolumeType == 1 ? Url.Content(String.Format("../../Images/DVDDisk.png")) : Url.Content(String.Format("../../Images/harddisk.png")))" height="32" width="32"&gt;
  • @adiga No Razor here :)
  • @AntonGogolev 没有正确阅读问题。刚刚看到标签,并认为这是缺少 () 括号的情况

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


【解决方案1】:

您需要使用条件运算符 (?:) 而不是内联 if 和内联表达式块 (&lt;%=) 而不是内联代码块 (&lt;%)。以下应该做你所追求的:

<img src="<%= item.VolumeType == 1 ?
    Url.Content(String.Format("../../Images/DVDDisk.png")) :
    Url.Content(String.Format("../../Images/harddisk.png")) %>" height="32" width="32" />

对于它的价值,您可以通过删除 string.Format 调用(因为它们不是必需的)或使用 string.Format 输出文件名来删除重复的 Url.Content 调用来简化上述操作:

<img src="<%= Url.Content(String.Format("../../Images/{0}.png", item.VolumeType == 1 ? "DVDDisk" : "harddisk")) %>" height="32" width="32" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2015-06-21
    • 2012-09-08
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多