2015-09-07 3 views
-2

Есть ли простой способ конвертировать объект C# в обычную строку, которая экранирована и может использоваться javascript?Преобразование модели C# в обычную json-строку

Я пытаюсь передать строку в функцию jQuery, которая заменит некоторые части этой строки действительными значениями, чтобы передать их как объект запроса через $.ajax.

Что бы я ни пытался (нашел в интернете) не работает.

В настоящее время у меня есть:

var jsVariable = "@Html.Raw(Json.Encode(new MyClass()))" 

, но это бросает Uncaught SyntaxError: Unexpected identifier как в " не экранируются правильно.

Обновление 1

В конце я хотел бы иметь JSON-строку, как

"{"Prop1": "{0}", "Prop2":"{1}"}" 

, на которых я могу (в javascript) вызова

var request = string.Format(jsVariable, value1, value2); 

, чтобы включить

$.ajax({ 
    type: "POST", 
    url: "someUrl", 
    data: $.parseJson(request), 
    success: function(data) { 
     console.log("success"); 
    }, 
    dataType: "JSON" 
}) 
+1

Вы ищете: http://www.newtonsoft.com/json? – tschmit007

+0

Я думаю, вы можете использовать метод сериализации json, который будет конвертировать в объект json. –

+0

@ tschmit007: то же самое хочется сказать –

ответ

1

Просто избавитесь от двойных кавычек.

Убедитесь, что это добавлено в тег сценария вашего представления.

var jsVariable = @Html.Raw(Json.Encode(new MyClass())) 

вы затем получить яваскрипт объект с его свойствами - при условии, MyClass определена, и доступен в вашем CSHTML.

jsVariable.myProp, jsVariable.myOtherProp. , etc

+0

Это то, к чему я частично тоже попал. Я думал, что будет простой способ иметь это как строку внутри javascript для замены значений свойств, таких как 'string.Format (jsVariable, value1, value2)' и строить из этого данные '. .ajax'. Таким образом, это больше похоже на какой-то шаблон объекта 'Request' – KingKerosin

+0

, если вы хотите изменить значения свойств и передать его вашему вызову ajax - вы можете просто изменить свои свойства следующим образом: jsVariable.myProp = yourNewValue, тогда вы может передать один и тот же объект вашему вызову ajax - данные: JSON.stringify (jsVariable) –

+0

См. мой обновленный ответ – KingKerosin

Смежные вопросы