On the most part you do not bill for your education. Your 'payment' for it is the fact that you now have more experience and a more diversified skill set - that is in itself valuable.
However, this is conditional on the popularity of the framework. Some people end up working with arcane or very niche technologies, and the typical going expectation is that when you start looking at that sort of code, your ramp-up time should be compensated for.
The problem is that the line between niche and mainstream technologies is often blurry. This is why IMHO the best way to go is to be very explicit about what you know and what you are familiar with and then bill for every hour of 'work', where work is defined as any time spent getting the project from where it is now to where the client wants it to be. This is fair because when it comes to experienced developers and multiple frameworks, the probability of finding someone with the exact skill set is very low. Most hiring managers settle for 'close enough and smart guy'. At the end of the day, every project requires a new developer to take some time to figure things out. This is normal, and sometimes it involves brushing up on frameworks while other times it just means learning the models and workflows.
In closing, I'd like to say that this is fundamentally a question of bargaining power. When a client is looking for a .NET developer, the expectation is that you know .NET pretty well and aren't coming in to learn it because of the large sea of .NET developers out there. If the client is looking for someone with a list of cobbled-together interchangeable open source components, then due to the supply and demand of the market, the probability of finding someone exactly like that is so low that it's expected that developers will be compensated for learning it.