/// <summary> /// Start writing a deferred (non-expanded) navigation link. /// </summary> /// <param name="navigationLink">The navigation link to write.</param> protected override void WriteDeferredNavigationLink(ODataNavigationLink navigationLink) { Debug.Assert(navigationLink != null, "navigationLink != null"); Debug.Assert(!string.IsNullOrEmpty(navigationLink.Name), "The navigation link Name should have been validated by now."); Debug.Assert(this.verboseJsonOutputContext.WritingResponse, "Deferred links are only supported in response, we should have verified this already."); WriterValidationUtils.ValidateNavigationLinkUrlPresent(navigationLink); this.verboseJsonOutputContext.JsonWriter.WriteName(navigationLink.Name); // A deferred navigation link is represented as an object this.verboseJsonOutputContext.JsonWriter.StartObjectScope(); // "__deferred": { this.verboseJsonOutputContext.JsonWriter.WriteName(JsonConstants.ODataDeferredName); this.verboseJsonOutputContext.JsonWriter.StartObjectScope(); Debug.Assert(navigationLink.Url != null, "The navigation link Url should have been validated by now."); this.verboseJsonOutputContext.JsonWriter.WriteName(JsonConstants.ODataNavigationLinkUriName); this.verboseJsonOutputContext.JsonWriter.WriteValue(this.verboseJsonEntryAndFeedSerializer.UriToAbsoluteUriString(navigationLink.Url)); // End the __deferred object this.verboseJsonOutputContext.JsonWriter.EndObjectScope(); // End the navigation link value this.verboseJsonOutputContext.JsonWriter.EndObjectScope(); }
/// <summary> /// Writes the navigation link's start element and atom metadata. /// </summary> /// <param name="navigationLink">The navigation link to write.</param> /// <param name="navigationLinkUrlOverride">Url to use for the navigation link. If this is specified the Url property on the <paramref name="navigationLink"/> /// will be ignored. If this parameter is null, the Url from the navigation link is used.</param> private void WriteNavigationLinkStart(ODataNavigationLink navigationLink, Uri navigationLinkUrlOverride) { WriterValidationUtils.ValidateNavigationLinkHasCardinality(navigationLink); WriterValidationUtils.ValidateNavigationLinkUrlPresent(navigationLink); this.atomEntryAndFeedSerializer.WriteNavigationLinkStart(navigationLink, navigationLinkUrlOverride); }