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>

所以它用“Unexpected token }”(可以理解)破解它。

如何使用 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 回答