views:

373

answers:

1

Having just upgraded to the latest ASP.NET MVC Release Candidate I noticed that, when using Html Helpers, any name with a period "." in it will have this replaced by an underscore "_" when the element's ID is output.

I believe this is to aid in using JQuery and the use of the period is to aid in the use of ModelBinders. This has broken all of our javascript, which uses prototype, as the IDs have all changed.

Is there a way to turn this feature off easily?

+8  A: 

From the ASP.NET MVC RC1 Release notes (page 15).

In this release, by default the dot character is automatically replaced with an underscore in the value of the ID attribute. Thus the example TextBox renders the following markup:

<input type="text" name="Person.FirstName" id="Person_FirstName" />

To change the default replacement character, you can set the HtmlHelper.IDDotReplacementChar property to the character that you want to use instead.

FYI. Looking at the source code at http://www.codeplex.com/aspnet, it appears that the real name of the property in RC1 is IdAttributeDotReplacement. The relevant code snippet is below. To keep the dot, you'd just set this property to the dot character -- i.e., replace the dot character with itself.

public static string IdAttributeDotReplacement {
    get {
        if (String.IsNullOrEmpty(_idAttributeDotReplacement)) {
            _idAttributeDotReplacement = "_";
        }
        return _idAttributeDotReplacement;
    }
    set {
        _idAttributeDotReplacement = value;
    }
}
tvanfosson
Seems an odd way of doing it - suppose it is to help out the JQuery default. I added HtmlHelper.IdAttributeDotReplacement = "."; to Global Application_Start and we were back online in 8 minutes ;) Thanks
Paul Shannon