@inherits Custom.Hybrid.Razor14
@using ToSic.Razor.Blade;
<!-- unimportant stuff, hidden -->
<div @Sys.PageParts.InfoWrapper()>
@Html.Partial("../shared/DefaultInfoSection.cshtml")
<div @Sys.PageParts.InfoIntro()>
<h2>Working with <em>number</em> URL Parameters</h2>
<p>
When you expect a number, you usually need to convert it to an <code>int</code> or similar for further use. Otherwise you'll be comparing numbers with strings. For example <code>if (3 == "3")</code> would return <code>false</code> - which is not what you usually want. <br>
Additionally, you usually want to ensure that if no parameter is found, you will have a default value - othertise you may run into errors.
</p>
<ul>
@SubpageLink("This page without additional params", "")
@SubpageLink("put ?id=27 in the url", "id=27")
</ul>
</div>
</div>
@{
// This variable is a string, but could be null or empty
var idAsString = CmsContext.Page.Parameters["id"];
// This converts the id parameter to int and takes 0 as fallback
var id = Kit.Convert.ToInt(CmsContext.Page.Parameters["id"], 0);
}
<ul>
<li>
<strong>Raw id from URL:</strong> @idAsString <br>
Equal to string "27": @(idAsString == "27") <br>
Equal to number 27: (would throw error) <br>
</li>
<li>
<strong>Number id from URL:</strong> @id <br>
Equal to string "27": (would throw error) <br>
Equal to number 27: @(id == 27) <br>
</li>
</ul>
<hide>
@functions {
dynamic SubpageLink(string label, string urlparams) {
return Tag.Li()
.Wrap(
Tag.A(label).Href(Link.To(parameters: "?basics311=page&" + urlparams))
);
}
}
@* Footer *@
@Html.Partial("../Shared/Layout/FooterWithSource.cshtml", new { Sys = Sys })