Sometimes its useful to be able target html elements on a particular page or you want to have specific styling according to a particular area, controller or action.

Here is a small extension to use route data to do just that.

namespace Antix.Web.Mvc {

 public static class Extentions {

  /// <summary>
  /// <para>Get a string from the route data</para>
  /// </summary>
  public static string RouteString(
      this ViewContext context, string template) {

   foreach (var value in context.RouteData.Values) {

    template = template.Replace(string.Format("{{{0}}}", 
            value.Value == null
                ? string.Empty
                : value.Value.ToString().ToLower());

   return template;

Making sure that the extension is in scope;
by importing on your page

<%@ Import Namespace="Antix.Web.Mvc"%>

or adding to you web.config

    <add namespace="Antix.Web.Mvc"/>

Call the function to retrieve the route data in a particular format like so...

<body class="<%= ViewContext.RouteString("{controller}_{action}") %>">

I've used this in the master page of my site to identify a page Body tag by controller and action.

<blog class="home_blogentry">
comments powered by Disqus

On Twitter Follow MrAntix on Twitter

preetham_reddyc 13 minutes ago

RT @shanselman: Fantastic writeup on how @Azure WebJobs work

azurewindows 19 minutes ago

Adding a Co-administrator via the powershell #cloud #Azure #fb

FutureIsCloudy 32 minutes ago

Announcing the GA of Windows Azure Hyper-V Recovery Manager - In the Cloud - Site Home - TechNet Blogs

arnaudcleret 32 minutes ago

The Windows Azure Daily is out! Stories via @apri_anurapri @DaveRuijter

kamilazmer 44 minutes ago

RT @StanZhelyazkov: Tips for Applying Update Rollup 2 on System Center 2012 R2 and Windows Azure Pack #SysCtr #WAPack#SCOM#SCSM#SCVMM