【问题标题】:Nesting quotes in HTML > JavaScript > WebForms or how to call a .NET method in a JavaScript method在 HTML > JavaScript > WebForms 中嵌套引号或如何在 JavaScript 方法中调用 .NET 方法
【发布时间】:2016-04-20 08:06:20
【问题描述】:

谁会这么想,但我实际上需要在 ASP.NET WebForms 页面中嵌套 3 层引号。

这是我所拥有的:

<img 
    src='<% ResolveClientUrl("~/SwissStyleguide/img/swiss.svg"); %>'
    onerror="this.onerror=null; this.src='SwissStyleguide/img/swiss.png';" 
    alt="Confederatio Helvetica" 
/>

现在,第一部分,将动态创建的 URL 分配给 src 属性可以正常工作。服务器解析给定的特殊 URL 并创建一个绝对链接供客户端获取。

onerror 处理程序更棘手:由于 png 图像的src URL 已经在带有双引号的表达式中,我无法调用 ASP.NET 的 ResolveClientUrl 方法,该方法严格要求双引号对于字符串参数。

我试图这样做(不工作!)

<img 
    src='<% ResolveClientUrl("~/SwissStyleguide/img/swiss.svg"); %>'
    onerror="this.onerror=null; this.src='<% ResolveClientUrl("~/SwissStyleguide/img/swiss.png"); %>';" 
    alt="Confederatio Helvetica" 
/>

但毫无意外,Visual Studio 会抱怨这个字符串。我想到的唯一想法是使用字符串常量来避免使用最里面的引号,但这看起来很丑陋。

有没有办法转义或以其他方式指定部分或全部引号以使其正常工作?

注意:我知道这个问题:When to use double or single quotes in JavaScript?,但在这种情况下更改引号无济于事。

【问题讨论】:

    标签: javascript c# asp.net webforms double-quotes


    【解决方案1】:

    嗯,... 结果是 " WebForms 问题,完美回答这里:https://stackoverflow.com/a/957321/79485

    解决方案是在百分号后使用等号并省略尾随分号。像这样:

    onerror="this.onerror=null; this.src='<%= ResolveClientUrl("~/SwissStyleguide/img/swiss.png") %>';" 
    

    我将把问题和答案留在这里,以提醒任何人也被此绊倒。

    【讨论】:

      【解决方案2】:

      如何从代码隐藏中放置属性?

      .aspx

      <img id="image" runat="server" alt="Confederatio Helvetica" /> 
      

      .aspx.cs (Page_Load)

      image.Attributes.Add("src", Page.ResolveUrl("~/SwissStyleguide/img/swiss.svg"));
      image.Attributes.Add("onerror", "this.onerror=null; this.src='" +
          Page.ResolveUrl("~/SwissStyleguide/img/swiss.png") + "';";
      

      【讨论】:

      • 是的,这也可以。但是,我发现引号实际上并不是问题。
      • Server.MapPath 将给出服务器系统上的绝对路径,而不是从客户端解析的路径。你应该在你的答案中改变它。
      猜你喜欢
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      相关资源
      最近更新 更多