0

我怎样才能逃避引号,以便这个语句

string sScript =@"<script language='javascript'>function ShowDropDown(){var combo = $find("""+this.ClientID+""");combo.showDropDown(true);}</script>";

读起来像这样

function ShowDropDown() {
                var combo = $find("ctl00_ctl00_MainContent_MainContent_VendorTypeIdComboBox");
                combo.showDropDown(true);
            }

编辑-更新 我可能会问错问题,因为我不断收到不同的错误。如果我将 javascript 直接放在页面上,则该功能正常工作。当我以这种方式注入javascript时,它不起作用

我在后面的代码中这样做

string sScript =@"<script language='javascript'> function ShowDropDown(){  var combo = $find("""+this.ClientID+@"""); combo.showDropDown(true); } </script>";
        ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "autoopendropdown", sScript, false);

        OnClientFocus = "ShowDropDown()";

它以这种方式生成

<script language='javascript'> function ShowDropDown(){  var combo = $find("ctl00_ctl00_MainContent_MainContent_VendorTypeIdComboBox"); combo.showDropDown(true); } </script>

但变量组合为空,这就是问题所在。我无法弄清楚为什么当它使用代码隐藏注册时它不起作用,而当它正常写在它的页面上时。

4

6 回答 6

1

简单的方法:@在第二个字符串文字的开头添加相同的内容:

string sScript =@"<script language='javascript'>function ShowDropDown(){var combo = $find("""+this.ClientID+@""");combo.showDropDown(true);}</script>";

更好的方法:使用 string.Format

string sScript = string.Format(
@"<script language='javascript'>
    function ShowDropDown(){
        var combo = $find(""{0}"");combo.showDropDown(true);
    }
</script>",
    this.ClientID);

(最好的方法:使用不显眼的 javascript 分离关注点。)

于 2013-03-22T00:02:09.680 回答
1
string sScript = "<script language='javascript'>\n" +
                 "function ShowDropDown() {\n" +
                 "    var combo = $find(""" + this.ClientID + """);\n" +
                 "    combo.showDropDown(true);\n" +
                 "}\n" +
                 "</script>";
于 2013-03-22T00:04:20.890 回答
0

注意:脚本标签不推荐使用语言,请使用类型

string sScript =@"
<script type='text/javascript'>
function ShowDropDown(){
                var combo = $find(""" + this.ClientID + @""");
                combo.showDropDown(true);
            }
</script>";
于 2013-03-22T00:18:31.737 回答
0

C#(和大多数 C 系列语言)中双引号的转义是\"

或者您可以只使用单引号,因为它在 JavaScript 中有效。

于 2013-03-21T23:59:47.033 回答
0

如果我正确理解您的问题,您想this.ClientID与脚本的其余部分连接。

您可以使用如下String.Format方法执行此操作:

string scriptFormat = @"<script language='javascript'>function ShowDropDown(){var combo = $find(""{0}"");combo.showDropDown(true);}</script>";
string sScript = String.Format(scriptFormat, this.ClientID);

请注意,在逐字字符串文字中,""会产生单个"字符。

于 2013-03-22T00:01:15.843 回答
0

\您可以使用该字符转义它们。

有关转义组合的完整列表,请参阅 C#语言规范的第 2.4.4.4 节字符文字。

于 2013-03-22T00:02:16.057 回答