For what it is worth, rather then having to specify in each masterpage file in the directive as well as the code behind, we added this little mod to the skinbase.cs: replacing the original:
C#/VB.NET Code:
this.MasterPageFile = "~/App_Templates/" + SkinDirectory + "/" + m_TemplateName;
this.Theme = PageTheme;
With this:
C#/VB.NET Code:
// If this.MasterPageFile is not the out of the box skin_1/template.master then the develper said what one he/she wants to use. so dont override it .. ever..
if (String.IsNullOrEmpty(this.MasterPageFile) || this.MasterPageFile.ToLower() == "~/app_templates/skin_1/template.master" || IsMobile)
{
this.MasterPageFile = "~/App_Templates/" + SkinDirectory + "/" + m_TemplateName;
this.Theme = PageTheme;
}
else
{
String[] masterPageFile = this.MasterPageFile.Split('/');
m_TemplateName = masterPageFile[masterPageFile.Length-1];
this.Theme = masterPageFile[masterPageFile.Length - 2];
}
This way if you have taken the time to specify the MaterPageFile="~/App_Templates/Skin_99/MyCustomTemplate.master" the skin base will honor it.
The only side effect is that you can only do DYNAMIC template switching when the MasterPageFile= Directive is set to what aspdnsf uses out of the box "~/App_Templates/Skin_1/template.master"