Używam tego pomocnika od asp.net mvc 2
public static MvcHtmlString ToJson(this HtmlHelper html, object obj)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return MvcHtmlString.Create(serializer.Serialize(obj));
}
public static MvcHtmlString ToJson(this HtmlHelper html, object obj, int recursionDepth)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RecursionLimit = recursionDepth;
return MvcHtmlString.Create(serializer.Serialize(obj));
}
I w widoku:
<script>
var s = @(Html.ToJson(Model.Content));
</script>
należy wymienić serializatora z JSON.Encode (..) teraz, jak wymieniono w poleceniu przez Hemanta. (Wykorzystuje sam JavaScriptSerializer).
Źródłem problemu jest "@" kod HTML kodu JSON. Możesz użyć @ Html.Raw (..), aby uniknąć tego zachowania.
+: spójrz na Json.NET http://json.codeplex.com/
Json.NET aktualizować
zaktualizowałem pomocnika jakiś czas temu z Json.NET (znacznie lepiej).
Wygląda na to, że niektórzy użytkownicy nadal czytają, odtwarzają i używają starego kodu. Chciałbym, aby korzystali z lepszej metody, z nową wersją poniżej lub przy użyciu NGon, takiej jak Matthew Nichols, która zauważyła to w komentarzu.
Oto kod:
using System;
using Newtonsoft.Json;
namespace System.Web.Mvc
{
public static class HtmlHelperExtensions
{
private static readonly JsonSerializerSettings settings;
static HtmlHelperExtensions()
{
settings = new JsonSerializerSettings();
// CamelCase: "MyProperty" will become "myProperty"
settings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
}
public static MvcHtmlString ToJson(this HtmlHelper html, object value)
{
return MvcHtmlString.Create(JsonConvert.SerializeObject(value, Formatting.None, settings));
}
}
}
przeczytaj http: // stackoverflow.com/questions/3365551/asp-net-mvc-how-to-convert-view-model-into-json-object –