Отказ от ответственности: я никогда не использовал asp.net, но функции форматирования строк не могут быть такими разными, верно?;)
На самом деле вам не нужно передавать его как строку JSON, передавайте как объект JavaScript.Попробуйте:
closeWindow.OnClickFunc = String.Format("CloseWindow({0});", "{codeA:'MALE',codeB:'SomeCodeB'}")
// no quotes ---^-^
Если вы использовали JSON.parse
в CloseWindow
, вам это больше не нужно.Вы можете получить доступ к данным непосредственно из параметра, например: param.codeA
.
Обновление:
Относительно проблем с выходом.Если у вас есть
"{\"codeA\":\"MALE\",\"codeB\":\"SomeCodeB\"}"
, то это будет только экранировать кавычки в строке на стороне сервера.Сгенерированный код должен выглядеть так:
<img onclick="CloseWindow('{"codeA":"MALE","codeB":"SomeCodeB"}'" src="close.jpg" id="closeLink">
, что явно недопустимо.Вам понадобится
<img onclick="CloseWindow('{\"codeA\":\"MALE\",\"codeB\":\"SomeCodeB\"}'" src="close.jpg" id="closeLink">
Теперь я думаю, что вы можете достичь этого с тремя обратными слешами в строке:
String.Format("CloseWindow('{0}');", "{\\\"codeA\\\":\\\"MALE\\\",\\\"codeB\\\":\\\"SomeCodeB\\\"}");
Хотя, возможно, есть лучший способ.Как я уже сказал, я не знаю asp.net.
Тем не менее, нет необходимости передавать данные в виде строки JSON.Простой JavaScript намного проще.