Можно ли как-то это сделать, не вынимая @? Это не нравится @
cJavaScript.AppendFormat(@"
function GetNextProductIDs(state)
{
var productIDs = new Array();
var {0}lastProductFoundIndex = $.inArray({0}lastProductID, {0}allProductIDs);
return productIDs.join();
}; ", ClientID);
Проблема заключается не в @, а в фигурной скобке. Использование двух фигурных скобок приведет к их эффективному отмене.
cJavaScript.AppendFormat(@"
function GetNextProductIDs(state)
{{
var productIDs = new Array();
var {0}lastProductFoundIndex = $.inArray({0}lastProductID, {0}allProductIDs);
return productIDs.join();
}}; ", ClientID);
Мне нравится использовать строку use.Concat или StringBuilder для добавления многострочных строк, подобных этому вместе. Обычно мне все равно, если cr/lf там, но вы можете настроить, если вы это сделаете:
string fmt = string.Concat(
"function GetNextProductIDs(state) ",
"{",
"var productIDs = new Array();"
...
);
cJavaScript.AppendFormat(fmt, ClientID);
Все, что делает "@", это соблюдение разрывов строк. Вы можете удалить "@", заменив разрывы строк на "\ r\n":
cJavaScript.AppendFormat(
"function GetNextProductIDs(state)\r\n" +
"{\r\n\r\n" +
" var productIDs = new Array();\r\n\r\n" +
" var {0}lastProductFoundIndex = $.inArray({0}lastProductID, {0}allProductIDs);\r\n" +
" return productIDs.join();\r\n" +
"}; ", ClientID);
Метод StringBuilder
AppendFormat
принимает строку формата. Поскольку используемая строка содержит {
и }
в качестве фигурного скобки JavaScript, она интерпретирует этот метод как токен формата.
Чтобы избежать их, используйте двойные фигурные скобки {{
и }}
.