0

オブジェクトをインターフェイスにキャストして、不要なプロパティを除外しようとしています。次に、次のコードのようにJSONオブジェクトにシリアル化します。

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

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

ただし、インターフェイスで定義されているプロパティのみをシリアル化するのではなく、元のオブジェクトのすべてのプロパティをシリアル化します。

元のオブジェクトにあるすべてのプロパティをシリアル化するのではなく、現在のオブジェクトタイプのプロパティのみをシリアル化するにはどうすればよいですか?

4

1 に答える 1

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 を切り取ってください。

于 2012-10-16T08:44:27.920 に答える