5

Json.Encode()ヘルパーはJavaScriptSerializerクラスを使用して文字列をjsonにエンコードしますか?

Json.Encode(Model)シリアル化されているクラスプロパティに属性があるのに、使用すると循環参照例外が発生し[ScriptIgnore]ます。

私の唯一の推測は、Json.Encode()ヘルパーがJavaScriptSerializerを使用してjsonにシリアル化していない可能性があることですが、msdnのどこにもドキュメントが見つかりません。

@Html.Raw(Json.Encode(Model))

これは、シリアル化してはならないプロパティを持つモデルの1つの例です...

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Web.Script.Serialization;

namespace RobotDog.Entities {
    public class Character {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        [MaxLength(200)]
        public string Name { get; set; }

        public virtual Person Person { get; set; }

        [ScriptIgnore]
        public virtual Movie Movie { get; set; }
    }
}
4

2 に答える 2

6

Json.Encode()ヘルパーはJavaScriptSerializerクラスを使用して文字列をjsonにエンコードしますか?

はい。

ソースコードから:

private static readonly JavaScriptSerializer _serializer = Json.CreateSerializer();

public static string Encode(object value)
{
  DynamicJsonArray dynamicJsonArray = value as DynamicJsonArray;
  if (dynamicJsonArray != null)
    return Json._serializer.Serialize((object) (object[]) dynamicJsonArray);
  else
    return Json._serializer.Serialize(value);
}

どこにJavaScriptSerializerありますかSystem.Web.Script.Serialization.JavaScriptSerializer

また、あなたの問題を支援するために、このスレッドを参照してください

于 2013-01-26T05:45:09.543 に答える
0

http://msdn.microsoft.com/en-us/library/system.web.helpers.json.encode(v=vs.111).aspx

上記のリンクによると、Json.Encodeはsystem.web.helpersを使用します。

モデルには何が含まれていますか?

また、[ScriptIgnore]は、割り当てられているものを無視しますか?

于 2013-01-25T02:53:47.810 に答える