#c# #javascript #.net #visual-studio-2010
#c# #javascript #.net #visual-studio-2010
Вопрос:
Я отправляю функции javascript строку из-за кода в .net. Проблема в том, что длина строки превышает 200 символов, и функция javascript, похоже, не принимает строку. Существует ли ограничение на то, какой длины может быть переменная, и есть ли способ обойти это??
If dr("ReturnType").ToString() = "Override" Then
Dim teststring As String = "openWin('" amp; dr("ReturnValue").ToString() amp; "');"
ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "openWin", teststring, True)
End If
Комментарии:
1. Пожалуйста, опубликуйте код, в котором вы определяете строку.
Ответ №1:
Да, есть ограничение: около 2 ГБ, это то, что вы можете хранить в строке в .NET. Но поскольку мы можем с уверенностью предположить, что вы не отправляете такой объем с сервера клиенту (или, по крайней мере, мы можем надеяться), другая возможность заключается в том, что ваша строка не закодирована. Поэтому закодируйте его перед отправкой клиенту. И лучший способ убедиться, что строка или объект правильно закодированы, — это сериализовать их в формате JSON. В .NET это может быть легко достигнуто с помощью класса JavaScriptSerializer:
var value = new JavaScriptSerializer().Serialize("some string that contains ' and ".");
var script = string.Format("alert({0});", value);
ClientScript.RegisterStartupScript(GetType(), "someKey", script, true);
Ответ №2:
Нет.
Вы, вероятно, забыли экранировать строку.
Ответ №3:
Максимальная длина буквенной строки зависит от реализации, но в современных браузерах длина, вероятно, ограничена только объемом памяти, доступным вашему браузеру.
Например, я только что попробовал тест в Chrome, и он позволил мне использовать более 400 МБ памяти для одного строкового литерала, прежде чем я решил завершить процесс.