1

メイン ビューで JavaScript オブジェクトを設定しようとしています。

<script type="text/javascript">
   xx.yy.zz = 
   {
     a: @Model.Id,
     b: '@Model.Name',
     c: @Html.Raw(Model.JsonFeature)
   }
</script>

プロパティ "a" は int です。

プロパティ「b」は文字列です。

プロパティ「c」もサーバー側の文字列ですが、実際には JSON エンコードされた文字列であるため、@Html.Raw を使用します。

しかし問題は、フィールドが空になる可能性があることです。そのため、次のようなことをしようとしています:

<script type="text/javascript">
   xx.yy.zz = 
   {
     a: @Model.Id,
     b: '@Model.Name',
     c: @(Model.JsonFeature != null ? Html.Raw(Model.MappingViewModel.JsonFeature) : null)
   }
</script>

そして、それはあらゆる種類の問題を引き起こしています。たとえば、これをレンダリングします:

<script type="text/javascript">
   xx.yy.zz = 
   {
     a: 1,
     b: 'Foo',
     c: 
   }
</script>

そして、「予期しないトークン}」でクラックします(理解できます)。

Razor C# 条件を使用して、JavaScript プロパティを文字列値または空に設定するにはどうすればよいですか?

4

1 に答える 1

3

このようにしてみてください:

<script type="text/javascript">
    xx.yy.zz = @Html.Raw(Json.Encode(new {
        a = Model.Id,
        b = Model.Name,
        c = Model.JsonFeature != null && !string.IsNullOrEmpty(Model.MappingViewModel.JsonFeature)
            ? Json.Decode(Model.MappingViewModel.JsonFeature)
            : (string)null
    }));
</script>
于 2012-05-07T06:09:15.313 に答える