Helpers for handling the SEO-data for ASP.NET web-applications.
Provides a SeoHelper-class which is easily accessible in Controllers, Views and through ActionFilterAttributes.
The SeoHelper-class exposes multiple properties to get or set multiple SEO-related data:
-
LinkCanonical: Gets or sets the canonical link for web-page.SiteUrl: Gets or sets the main URL for web-site. Used as base for the canonical link.
-
MetaDescription: Gets or sets the meta-description for web-page. -
MetaKeywords: Gets or sets the meta-keywords for web-page. -
MetaRobots: Gets or sets meta-robots instructions web-page. -
OgAudio: Gets or sets the open graph audio URL for web-page. -
OgDescription: Gets or sets the open graph description for web-page. Falls back on value inMetaDescription. -
OgDeterminer: Gets or sets the open graph determiner for web-page. -
OgImage: Gets or sets the open graph image for web-page. -
OgLocale: Gets or sets the open graph locale for web-page. -
OgLocaleAlternates: Gets or sets the open graph alternate locales for web-page. -
OgSiteName: Gets or sets the open graph site-name for web-page. Falls back on value inSiteName. -
OgTitle: Gets or sets the open graph title for web-page. Falls back on value inPageTitle. -
OgType: Gets or sets the open graph type for web-page. -
OgUrl: Gets or sets the open graph URL for web-page. Falls back on value inLinkCanonical. -
OgVideo: Gets or sets the open graph video URL for web-page. -
PageTitle: Gets or sets the title for a web-page.SiteName: Gets or sets the name for the web-site. Used as base forDocumentTitle.
-
DocumentTitle: Gets the document-title for a web-page. CombinesPageTitleandSiteName.DocumentTitleFormat: Gets or sets the format for the document-title. Default value is{0} - {1}, where{0}is the value fromPageTitleand{1}is the value fromSiteName.
SetCustomMeta(string key, string value, CustomMetaAttributeKey? attribute = null): Add any custom meta-tag. Keys starting with known prefixes such asog:orfb:default to thepropertyattribute. Use theattributeparameter to explicitly choosenameorproperty.SetMetaRobots(bool index, bool follow): Specify the instructions for robots. Updates the value forMetaRobots.
LinkCanonical can be set as absolute URL (https://example.com/section/page.html),
as a relative URL (/section/page.html) or using ASP.NET's app-relative URL-format (~/section.page.html).
Relative URLs will automatically get converted to absolute URLs, either from provided SiteUrl
or from the base of the requested URL.
The properties exposed by the SeoHelper-class all have corresponding
action-filter-attributes are available for Controllers and Controller-actions.
For example, [PageTitle] can be used for an action, if no logic is needed for the value,
while [SiteName] can be used for a controller. Using another [SiteName]-attribute on
an action will override the one used on the controller.
Examples of attribute-usage:
[SiteName("Website name")]
[SiteUrl("https://production-url.co/")]
public class InfoController : SeoController
{
[PageTitle("Listing items")]
[MetaDescription("List of the company's product-items")]
public ActionResult List()
{
var list = GetList();
if (list.Any())
{
Seo.PageTitle += $" (Total: {list.Count})";
Seo.LinkCanonical = "~/pages/list.html";
}
else
{
Seo.SetMetaRobots(index: false, follow: true);
}
return View(model);
}
}
To register the SEO-helper as a service for Dependency Injection you just need to use the framework's provided extension-method
in the ConfigureServices method inside Startup.cs:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSeoHelper();
}
}
With the configured Dependency Injection you can access the SeoHelper-class through constructor-injection or
by accessing the RequestServices-object
in the HttpContext.
The framework provides an extension-method for IServiceProvider for getting the SeoHelper-instance:
public IActionResult Edit()
{
var seoHelper = HttpContext.RequestServices.GetSeoHelper();
// ...
}
Tag Helpers are available to render the values set through the SeoHelper-class.
They also expose attributes to override or set the values on the fly in the markup.
Examples: <document-title /> renders the combined PageTitle and SiteName.
<link-canonical /> renders the canonical URL for the page.
<og-url /> renders the set URL for the page and falls back to value used in <link-canonical />.
<seo-tags /> renders all supported SEO tags at once.
Individual tags will not be rendered if there is no valid data provided for them,
either through the SeoHelper-class or exposed attributes.
To set the webb-application’s default base-title and default base canonical link, which can be overridden if needed, the configuration during registering the service for Dependency Injection can be used:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddSeoHelper(
siteName: "Website name",
siteUrl: "https://production-url.co/");
}
Support for classic ASP.NET MVC is deprecated.