如何在ASP.NET MVC中将接口序列化为JSON?

时间:2012-10-16 08:24:01

标签: asp.net-mvc json

我尝试通过将对象强制转换为某个界面来过滤掉不必要的属性。接下来,我将其序列化为JSON对象,如下面的代码。

@{ 
    var program = ViewBag.Program as IProgram;
}

<script type="text/javascript">
    window.program = @Html.Raw(Json.Encode(program));
</script>

但是,它仍然序列化原始对象中的所有属性,而不是仅序列化在接口中定义的属性。

如何仅序列化当前对象类型的属性,而不是序列化原始对象中的所有属性?

1 个答案:

答案 0 :(得分:0)

当然使用视图模型:

@{ 
    var program = new 
    { 
        Foo = ViewBag.Program.Property1,
        Bar = ViewBag.Program.Property2
    };
}

<script type="text/javascript">
    window.program = @Html.Raw(Json.Encode(program));
</script>

顺便说一下,这是应该在你的控制器动作中完成的事情,而不是混乱你的观点。因此,不要在ViewBag.Program中传递此对象,而是直接传递一个视图模型,该视图模型将仅包含您需要序列化的属性。

public ActionResult SomeAction()
{
    Program program = ...
    ViewBag.Program = new
    {
        Foo = ViewBag.Program.Property1,
        Bar = ViewBag.Program.Property2
    };
    return View();
}

哦,使用真实的视图模型并将ViewBag剪掉。