Лучшее решение - поместить javascript в отдельный файл и полностью избежать этого.Для этой конкретной функции вы выполняете работу на стороне сервера.Почему бы не создать список опций, которые вы намереваетесь динамически добавить в codebehind, поместить их в скрытый div, а затем просто добавить jQuery из уже отрендеренного HTML?
Если у вас есть ситуация, когда выесли вы действительно хотите динамически создавать много JavaScript таким образом, рассмотрите возможность использования ScriptManager в codebehind для установки переменных, которые вам понадобятся как скрипты, и зарегистрируйте их, тогда вашему встроенному скрипту не нужно будет экранировать
ScriptManager.RegisterClientScript("projects = " + GetProductsForEditRelationship());
(По сути, это не полный синтаксис, который зависит от контекста).Затем обратитесь к «проектам» в вашей функции.
(правка)
Немного более чистый способ сделать это в большем масштабе, настройте все, что вам нужно, как это в codebehind:
string script = "var servervars = {" +
"GetProductsForEditRelationship: " + GetProductsForEditRelationship() +
"GetRelationshipsForEditRelationship: " + GetRelationshipsForEditRelationship() +
"}"
и ссылаются на все, например:
servervars.GetProductsForEditRelationship
Если вы делаете это много, конечно, вы можете создать класс для автоматизации построения сценария.