Как работать с двойными кавычками в JavaScript при обращении к переменной C # - PullRequest
2 голосов
/ 25 июня 2011

Мне нужно вызвать функцию JavaScript, которая принимает строковую переменную, которая может содержать двойные кавычки. Вот как я передаю свою переменную в функцию JavaScript:

onclick="copyDescription('<%# Eval("Description") %>');"

Проблема в том, что функция никогда не срабатывает, потому что ей не нравятся кавычки, которые могут быть в переменной 'Description'.

«Описание», например, может быть:

VALVE BALL 1" 2000 RP THRD NACE SS BALON LS-10561

Если я уберу двойную кавычку из приведенного выше описания, она прекрасно работает. Далее я проверил это, выполнив следующее, и все заработало, как и ожидалось:

        $(document).ready(function () {
        var str = 'VALVE BALL 1" 2000 RP THRD NACE SS BALON LS-10561';
        copyDescription(str);
    });

Я пытался сделать .replace ('",' \" ') и .replace (' "',' ') через JavaScript, но ни один не помог. Я могу удалить кавычки, изменив код C #, который получает значение для удаления двойной кавычки, и это работает. Просто не через JavaScript. Есть идеи?

Ответы [ 4 ]

2 голосов
/ 25 июня 2011

Используйте библиотеку Microsoft Anti-Cross Site Scripting и вызовите функцию JavaScriptEncode() в вашей строке

2 голосов
/ 25 июня 2011

Проблема в том, что " завершает атрибут HTML и обрезает промежуточный оператор JS.

Двойные кавычки должны быть представлены как &quot; в значениях атрибутов, разделенных двойными кавычками.

0 голосов
/ 27 июня 2011

Решением, которое я выбрал, было ответ на мой вопрос:

onclick="copyDescription('<%# Server.HtmlEncode(Eval("Description").ToString()) %>');"

Server.HtmlEncode работает так, как мне нужно.

Спасибо всем за вашу помощь иответы!

0 голосов
/ 25 июня 2011

Вместо этого вызов Eval выводит JSON или открытый текст. Это позаботится о любых встроенных метасимволах Javascript. Я не знаю, как это сделать в C #, но в PHP это просто:

 onclick="copyDescription(<?php echo json_encode(...) ?>);"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...