我用這個幫手,因爲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));
}
並在視圖:
<script>
var s = @(Html.ToJson(Model.Content));
</script>
我應該用JSON.Encode(..)現在,像mentionned取代串行在Hemant的引用中。 (它使用自己的JavaScriptSerializer)。
問題的根源在於HTML編碼JSON的「@」。您可以使用@ Html.Raw(..)來避免此行爲。
+:看看爲Json.Net http://json.codeplex.com/
JSON.Net更新
我已經與JSON.net(更好)更新了輔助前一陣子。
似乎有些用戶繼續閱讀,upvote和使用舊的代碼。我希望他們使用更好的方式,使用下面的新版本,或者使用NGon(如Matthew Nichols)已在註釋中注意到它。
下面的代碼:
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));
}
}
}
請參閱http:// stackoverflow。COM /問題/ 3365551/ASP淨MVC-如何對轉換 - 視圖 - 模型 - 到 - JSON對象 – 2011-12-14 09:36:28