Skip to main content

Basic Tutorials

Tutorial Home

Preserve URL parameters

Create a link to the same page

In Razor page URLs are generated using Link.To(...). By default calling Link.To() without any parameters returns the base URL of the site. In this case it would be: https://kendev.co/2sxc-Apps/2sxc-Tutorial.

The key to retrieving the current page URL is to pass the current page parameters. Link.To(parameters: ...) will then construct the URL based on the passed parameters.
Current page parameters are found in CmsContext.Page.Parameters.


Link to current page with all Parameters

  1. Link to current page without Parameters: https://kendev.co/2sxc-Apps/2sxc-Tutorial
  2. Link to current page preserving parameters https://kendev.co/2sxc-Apps/2sxc-Tutorial/basics320/page

  @{ var currentPageUrl = Link.To(parameters: CmsContext.Page.Parameters); }
  <ol>
    <li><a href='@Link.To()'>Link to current page without Parameters: @Link.To()</a></li>
    <li><a href='@currentPageUrl'>Link to current page preserving parameters @currentPageUrl</a></li>
  </ol>

Add Parameters

Because CmsContext.Page.Parameters follows the query string convention adding a new parameter isn't too difficult.
To add a new parameter you can use the .Add(key, value) method or add the parameters as string following the convention as for example &name=2sxc.


See current page parameters: basics320=page

See adjusted page parameters: basics320=page&name=2sxc


Current page URL with new parameter from string: https://kendev.co/2sxc-Apps/2sxc-Tutorial/basics320/page/name/2sxc

Current page URL with new parameter from .Add(...): https://kendev.co/2sxc-Apps/2sxc-Tutorial/basics320/page/name/2sxc


  @{
    // Example using string
    var newParamsFromString = CmsContext.Page.Parameters + "&name=2sxc";

    // Page parameters using .Add(...) method
    var newParamsFromAdd = CmsContext.Page.Parameters.Add("name", "2sxc");
  }

<!-- unimportant stuff, hidden -->

  <p>Current page URL with new parameter from string: @Link.To(parameters: newParamsFromString)</p>
  <p>Current page URL with new parameter from <code>.Add(...)</code>: @Link.To(parameters: newParamsFromAdd)</p>

Remove Parameters

To remove a parameter you can use the .Remove(key) method or modify the string containing parameters.


See current page parameters: basics320=page

See adjusted page parameters:


Current page URL with removed parameter: https://kendev.co/2sxc-Apps/2sxc-Tutorial


  @{
    var currentParamsRemoved = CmsContext.Page.Parameters.Remove("basics320");
  }

<!-- unimportant stuff, hidden -->

  <p>Current page URL with removed parameter: @Link.To(parameters: currentParamsRemoved)</p>

Change Parameters

To change a parameter you can use the .Set(key, value) method or modify the string containing parameters.


See current page parameters: basics320=page

See adjusted page parameters: basics320=2sxc


Current page URL with changed parameter: https://kendev.co/2sxc-Apps/2sxc-Tutorial/basics320/2sxc


  @{
    var currentParamsChanged = CmsContext.Page.Parameters.Set("basics320", "2sxc");
  }

<!-- unimportant stuff, hidden -->

  <p>Current page URL with changed parameter: @Link.To(parameters: currentParamsChanged)</p>

Source Code of this file

Below you'll see the source code of the file. Note that we're just showing the main part, and hiding some parts of the file which are not relevant for understanding the essentials. Click to expand the code

@inherits Custom.Hybrid.Razor14
<!-- unimportant stuff, hidden -->

  @{ var currentPageUrl = Link.To(parameters: CmsContext.Page.Parameters); }
  <ol>
    <li><a href='@Link.To()'>Link to current page without Parameters: @Link.To()</a></li>
    <li><a href='@currentPageUrl'>Link to current page preserving parameters @currentPageUrl</a></li>
  </ol>



<!-- unimportant stuff, hidden -->
<p>See current page parameters: <code>@CmsContext.Page.Parameters</code></p>

  @{
    // Example using string
    var newParamsFromString = CmsContext.Page.Parameters + "&name=2sxc";

    // Page parameters using .Add(...) method
    var newParamsFromAdd = CmsContext.Page.Parameters.Add("name", "2sxc");
  }

<!-- unimportant stuff, hidden -->

  <p>Current page URL with new parameter from string: @Link.To(parameters: newParamsFromString)</p>
  <p>Current page URL with new parameter from <code>.Add(...)</code>: @Link.To(parameters: newParamsFromAdd)</p>



<!-- unimportant stuff, hidden -->

<p>See current page parameters: <code>@CmsContext.Page.Parameters</code></p>

  @{
    var currentParamsRemoved = CmsContext.Page.Parameters.Remove("basics320");
  }

<!-- unimportant stuff, hidden -->

  <p>Current page URL with removed parameter: @Link.To(parameters: currentParamsRemoved)</p>



<!-- unimportant stuff, hidden -->

<p>See current page parameters: <code>@CmsContext.Page.Parameters</code></p>

  @{
    var currentParamsChanged = CmsContext.Page.Parameters.Set("basics320", "2sxc");
  }

<!-- unimportant stuff, hidden -->

  <p>Current page URL with changed parameter: @Link.To(parameters: currentParamsChanged)</p>



<!-- unimportant stuff, hidden -->