1

我正在尝试在网页上显示来自 Rally 的故事(分层要求)和缺陷列表。

我们在缺陷上有一个名为“InfraID”的自定义字段,但在我们的层次要求上没有。有没有办法检测每个 DynamicJsonObject 是否有一个名为“InfraId”的键以避免它抛出异常?

我尝试过 TryGetValue、Contains、HasKey,认为它被视为字典,但我不断收到 KeyNotFoundException。“给定的键不在字典中”

这是在 Razor ASP.NET MVC 视图中使用的。

@if (story.HasKey("InfraID"))
    {
       <td>@story["InfraID"];
       </td>
    }

所以我无法弄清楚 if 语句可以用来避免抛出异常。Story 的类型为 Rally.RestAPI.DynamicJsonObject。

我正在尝试使用相同的 html,无论它是缺陷还是故事,因为其他一切都正常。这只是因为它是缺陷的自定义属性。

如果它有助于看起来相关的堆栈跟踪是:

   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Rally.RestApi.DynamicJsonObject.GetMember(String name)
   at Rally.RestApi.DynamicJsonObject.TryGetMember(GetMemberBinder binder, Object& result)

所以我希望这并不意味着我不能在我的前端代码中检查它的存在。

4

1 回答 1

2

尝试HasMember

bool hasInfraId = story.HasMember("InfraID");

您可以在此处的开发人员门户上的完整 api 文档中找到 Rally.RestApi.DynamicJsonObject 的方法/命名空间:

Rally REST API .NET 命名空间

于 2013-02-05T04:55:50.053 回答