Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
 /// <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);
 }