Inline or Code Behind - EPI Server Property
I have a requirement where a product price is selected based of discount flag setting done by web admin in edit mode. I have three property's “Normal Price”, “Promotional Price” and a flag “For sale”. if “for sale” is on then the promotional price should be shown other wise normal price should be shown. I found two ways to work on this issue inline or code behind.
Code Behind :-
For code behind I created a property and made a check in get assessor of the property -
public int Price
{
get
{
PropertyData property = CurrentPage.Property["StockStatus"];
if (property.ToString().ToLower() == "forsale")
{
PropertyData property22 = CurrentPage.Property["PromotionalPrice"];
if (property22 != null && !property22.IsNull)
{
_price = Convert.ToInt32(property22.ToString());
}
}
else
{
PropertyData property22 = CurrentPage.Property["ProductPrice"];
if (property22 != null && !property22.IsNull)
{
_price = Convert.ToInt32(property22.ToString());
}
}
return _price;
}
}
Only html at UI is-
<% = Price %>
Inline Code:-
Below is the straight forward inline code -
<% if (CurrentPage.Property["StockStatus"].ToString().ToLower() == "forsale")
{ %>
<%= CurrentPage.Property["PromotionalPrice"].ToString() %>
<% }
else
{ %>
<%= CurrentPage.Property["ProductPrice"].ToString() %>
<% } %>
To "ToString" the properties directly is dangerous - they could be null. Get a string property like this (DefaultValue could be anything you like):
CurrentPage["StockStatus"] as string ?? DefaultValue
or use Convert.String could be used i think that will returns string.empty if i remember correctly if null..
Yes using "ToString" directly is dangerous. Further on best practice of property usage go to online cms sdk.
- http://sdk.episerver.com/library/cms6.1/index.aspx#
- Developers Guide
- Core Features
- Properties
- Working With Page Properties in EPiServer CMS