Question

Last year we moved all our new functionality to ASP.NET MVC.

However we still have a load of legacy WebForms pages with lots of JavaScript code, and we're not going to get the chance to upgrade them any time soon.

More recently we also moved to ASP.NET 4, and that seems to have broken a load of the JavaScript code on these legacy pages.

Where before the client id would be:

ctl001_masterControlName_panelControlName_controlWeWant

Now they have become:

ctl001_masterControlName_panelControlName_controlWeWant_0

Where does that _0 suffix come from? There's only one controlWeWant in panelControlName, so the suffix adds no value.

I know hardcoded client ids are a bad idea with WebForms; one of the reasons we moved to ASP.NET MVC was the awful HTML produced by WebForms. However for this legacy code we're stuck with it, and I'd rather not go changing it (until the day comes when we have some free time to do it properly).

Why is ASP.NET 4 adding the _0 suffix at all?

Can I turn it off?

Is there another way to avoid it?

Was it helpful?

Solution

Check out What is New in ASP.NET 4.0 - ClientID Generation for a Cleaner MarkUp. It explains some new functionality in ASP.NET 4.0 when it comes to id generation.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top