When you expect a number, you usually need to convert it to an int
or similar for further use. Otherwise you'll be comparing numbers with strings. For example if (3 == "3")
would return false
- which is not what you usually want.
Additionally, you usually want to ensure that if no parameter is found, you will have a default value - othertise you may run into errors.
⬇️ Result | Source ➡️
Click on the links to change the url-parameters of this page and see the results below.
-
Raw id from URL:
Equal to string "27": False
Equal to number 27: (would throw error)
-
Number id from URL: 0
Equal to string "27": (would throw error)
Equal to number 27: False
-
Number id from URL or -1: -1
Equal to string "27": (would throw error)
Equal to number 27: False
@inherits Custom.Hybrid.Razor14
@using ToSic.Razor.Blade
@{
// This variable is a string, but could be null or empty
var idAsString = CmsContext.Page.Parameters["id"];
// This converts the id parameter to int. First sample auto-falls back to 0, other to -1
var id = Kit.Convert.ToInt(CmsContext.Page.Parameters["id"]);
var idOrMinus1 = Kit.Convert.ToInt(CmsContext.Page.Parameters["id"], -1);
}
<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>
<li>
<strong>Number id from URL or -1:</strong> @idOrMinus1 <br>
Equal to string "27": (would throw error) <br>
Equal to number 27: @(idOrMinus1 == 27) <br>
</li>
</ul>