Natürlich kann man das MasterPage-Template eines WebForms auch on the fly ändern - allerdings nur bis zum OnPreInit-Event. Das Beispiel zeigt wie einfach es gehen kann:
protected override void OnPreInit(EventArgs e)
{
object tpl = Request.QueryString["Template"];
if (tpl == null || tpl.ToString() == "Default")
{
this.MasterPageFile = "~/Templates/Category/Standard.master";
}
else
{
this.MasterPageFile = "~/Templates/Category/Sample.master";
}
}