AddressField

NEW TO SITEFINITY?

Address field is a field for dynamic content types created using Module Builder tool. It holds information about real world locations using Google Maps v3 API. This article aims to describe how to use that field in code.

Use the following sample to create an item with address field:

using System;
using Telerik.Sitefinity.DynamicModules;
using Telerik.Sitefinity.DynamicModules.Model;
using Telerik.Sitefinity.GeoLocations.Model;
using Telerik.Sitefinity.Lifecycle;
using Telerik.Sitefinity.Security;
using Telerik.Sitefinity.Utilities.TypeConverters;
using Telerik.Sitefinity.Model;
namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Controls.FieldControls
{
public partial class AddressFieldSnippets
{
public static void CreateItemWithAddressField()
{
DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
Type sightseeingType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.Tourism.Sightseeing");
Guid itemId = Guid.NewGuid();
DynamicContent sightseeingItem = dynamicModuleManager.CreateDataItem(sightseeingType, itemId, dynamicModuleManager.Provider.ApplicationName);
//Creating address object that is going to be assigned to the address field
Address address = new Address();
address.Longitude = -118.32666;
address.Latitude = 34.10163;
address.CountryCode = "US";
address.StateCode = "CA";
address.City = "Los Angeles";
address.Street = "Hollywood Boulevard";
address.Zip = "90028";
sightseeingItem.SetValue("Location", address);
sightseeingItem.SetValue("Name", "Best of Los Angeles");
sightseeingItem.SetString("UrlName", "best-of-los-angeles");
sightseeingItem.SetValue("Owner", SecurityManager.GetCurrentUserId());
sightseeingItem.SetValue("PublicationDate", DateTime.Now);
// We can now call the following to publish the item
ILifecycleDataItem publishedSomeContentItem = dynamicModuleManager.Lifecycle.Publish(sightseeingItem);
//You need to set appropriate workflow status
sightseeingItem.SetWorkflowStatus(dynamicModuleManager.Provider.ApplicationName, "Published");
// You need to call SaveChanges() in order for the items to be actually persisted to data store
dynamicModuleManager.SaveChanges();
}
}
}

Use the following code sample to edit an item with address field:

using System;
using Telerik.Sitefinity.DynamicModules;
using Telerik.Sitefinity.DynamicModules.Model;
using Telerik.Sitefinity.GeoLocations.Model;
using Telerik.Sitefinity.Lifecycle;
using Telerik.Sitefinity.Model;
using Telerik.Sitefinity.Utilities.TypeConverters;
namespace SitefinityWebApp
{
public class AddressFieldEdit
{
public void ModifyAddressField(Guid itemId)
{
DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
Type sightseeingType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.Tourism.Sightseeing");
DynamicContent item = dynamicModuleManager.GetDataItem(sightseeingType, itemId);
// Then we check it out
DynamicContent checkOutSightseeingItem = dynamicModuleManager.Lifecycle.CheckOut(item) as DynamicContent;
var address = checkOutSightseeingItem.GetValue<Address>("Location");
address.Street = "Hooper Ave";
// We can now change any values of the item
checkOutSightseeingItem.SetValue("Location", address);
// Now we need to check in, so the changes apply
ILifecycleDataItem checkInSightseeingItem = dynamicModuleManager.Lifecycle.CheckIn(checkOutSightseeingItem);
//Finnaly we publish the item again
dynamicModuleManager.Lifecycle.Publish(checkInSightseeingItem);
// You need to call SaveChanges() in order for the items to be actually persisted to data store
dynamicModuleManager.SaveChanges();
}
}
}

The above examples are using address field with form and map which is considered the full version of the field. To take advantage of the other two types of address fields do the following:

  • For form only address field Longitude and Latitude properties are not involved in field initialization and can be left with their default values.
  • For map only address field Longitude and Latitude are the only required properties to show a point on a map. If values for the other properties (like City and Country) are set they won’t affect field initialization.

Country codes are set by the ISO 3166-1 alpha-2 standard. State property should be set only when the country is United States or Canada. It is 2 letters code which can be obtained from Wikipedia. Here are links for US states codes and Canada state codes.

Want to learn more?

Increase your Sitefinity skills by signing up for our free trainings. Get Sitefinity-certified at Progress Education Community to boost your credentials.

Get started with Integration Hub | Sitefinity Cloud | Sitefinity SaaS

This free lesson teaches administrators, marketers, and other business professionals how to use the Integration hub service to create automated workflows between Sitefinity and other business systems.

Web Security for Sitefinity Administrators

This free lesson teaches administrators the basics about protecting yor Sitefinity instance and its sites from external threats. Configure HTTPS, SSL, allow lists for trusted sites, and cookie security, among others.

Foundations of Sitefinity ASP.NET Core Development

The free on-demand video course teaches developers how to use Sitefinity .NET Core and leverage its decoupled architecture and new way of coding against the platform.

Was this article helpful?