私はasp.net MVC 4ベータ版で新しいApiControllerをテストしていますが、次のようなクラスを返そうとするといくつかのプロパティがシリアル化されますか?ASP.NET MVC 4 ApiControllerはすべてのプロパティをシリアル化しません
public class PageModel : IPageModel {
public string Id { get; set; }
public virtual IPageMetadata Metadata { get; private set; }
public PageModel() {
Metadata = new PageMetadata();
}
}
これは私のAPIコントローラ
// GET /api/pages/5
public PageModel Get(string id) {
return new PageModel { Id = "pages/1", Metadata = {Name = "Foo"} };
}
のコードであり、これは結果
{
Id: "pages/1",
Parent: null
}
は完全なオブジェクトだけでなく、いくつかのことを取得することも可能ですか?
これは問題を解決しなかった、または私がhttp://pastebin.com/gN23Axyrを変更したときに別のエラーが発生することを意味します...私が変更した場合、デフォルトのシリアライザがIPageMetadataのシリアル化を処理しないようですそれはPageMetadataに作用します。 BumbyCapsの代わりにjsonを小文字にするために、これを処理できるシリアライザが含まれていますか? – Marcus
インターフェイスをシリアル化することはできませんが、 '[KnownType(typeof(PageMetadata)]'属性を 'PageModel'クラスに置いてみてください。これは、オブジェクト参照型が 'PageMetadata'である限り、' Metadata'プロパティのシリアライゼーションを修正するはずです。 –