【问题标题】:Writing back a function through Response.Write()通过 Response.Write() 写回一个函数
【发布时间】:2012-04-25 02:39:49
【问题描述】:

我正在尝试在 aspx 页面中使用 response.write 返回一个 javascript 函数。问题是我返回的函数有很多引号,它们与 repsonse.write 语法冲突。这是一个示例代码:

Response.Write("        If hello.StartsWith("H", StringComparison.InvariantCultureIgnoreCase) OrElse hello.StartsWith("W", System.StringComparison.InvariantCultureIgnoreCase) Then")

这给了我一个问题,因为里面的引号会提前切断响应。有没有更好的方法来做到这一点?

【问题讨论】:

  • 你为什么不把它放在 .aspx 标记中。
  • 你试过转义引号吗?喜欢:Response.Write(" If hello.StartsWith(\"H\", ... 或者您甚至可以使用单引号来包装内部函数:Response.Write('If hello.StartsWith("H", ... Then');
  • aspx 标记到底是什么?我需要将这个响应写在一个函数中,所以如果这就是你的意思,我不能完全使用代码块
  • @JohnBaum 那是 VB 代码,你是 response.writing。那将无法在浏览器中运行。您需要将其重写为 JavaScript,然后您可以在下面使用 rick 的答案(使用单引号和双引号的组合)

标签: javascript asp.net vb.net


【解决方案1】:

不是最好的方法,RegisterClientScriptBlock 更好,但如果您发出的是 JavaScript 而不是 VB.NET 代码,这将起作用:

Response.Write("<script>alert('test');</script>")

注意:如果您需要转义字符串,请在 Google 或此站点中进行简单搜索,就可以了。

【讨论】:

  • 我不明白这是如何解决双引号问题的
  • 它没有,做一些搜索,这个问题在这个网站上得到了回答。
【解决方案2】:
Use chr(34) for quote as shown below to create a string of js function: 

sJavaScript = sJavaScript & vbTab & vbTab & "if(TheForm."
sJavaScript = sJavaScript & "FieldName" & ".value == " & Chr(34) & Chr(34)
sJavaScript = sJavaScript & ")" & vbCrLf & vbTab & vbTab & vbTab & "{" & vbCrLf

【讨论】:

    【解决方案3】:

    如果您输出的函数是 javascript,那么一种方法是使用单引号。从 javascript 的角度来看,单引号和双引号对于字符串文字或多或少是可以互换的(尽管我确信在某些情况下这是不正确的——我只是不太了解 javascript,无法说出它们是什么)。

    Response.Write("        If hello.StartsWith('H', ...
    

    【讨论】:

      【解决方案4】:

      您可以在 javascript 中将双 qoute " 替换为单 qoute ',就像在 javascript 中一样 " 和 ' 做同样的事情,c# 不会反对单 qoute,但 RegisterClientScriptBlock 可能是最好的选择。

      【讨论】:

        猜你喜欢
        • 2011-07-14
        • 1970-01-01
        • 2012-02-08
        • 2016-09-02
        • 2012-12-14
        • 2021-09-25
        • 2020-12-26
        • 2014-09-09
        • 2020-11-03
        相关资源
        最近更新 更多