Vad jag vill göra Det är inte så konstigt, Layout är namnet på _en_ klass, du försöker skapa två klasser med samma namn. I din kod refererar du till en av dem, Layout. Din layout2 är en helt annan klass. När du har en instans av Layer2 så kan du inte göra om den till en Layout, helt omöjligt. TACK! Har tittat lite på Interfaces förut men aldrig förstått riktigt varför man skulle använda dom, men nu ser jag poängen.Hämta variabel från dynamiskt laddad masterpage.
1. Ladda in en masterpage dynamiskt. (Det här fungerar fint för mig.)
2. Hämta en variabel från denna masterpage-fil. (Här går det på skit.)
I min Default.aspx sätter jag masterpagefilen (väldigt förenklad version)
<code>protected override void OnPreInit(EventArgs e)
{
base.MasterPageFile = "layout.,master"
}</code>
I masterpagefilen har jag 2 properties :
<code> public Unit Width
{
get { return new Unit(100, UnitType.Percentage); }
}
public Unit Height
{
get { return new Unit(270, UnitType.Pixel); }
}</code>
Som jag försöker hämta till Default.aspx i page_load :
<code> Layout Template = (Layout)Page.Master;
MainContent.Width = Template.Width;
MainContent.Height = Template.Height;
}</code>
Jag har 2 masterpage filer, båda är identiska, klassnamnet på båda är "Layout" (public partial class Layout : System.Web.UI.MasterPage). Den ena filen heter Layout.master och den andra Layout2.master.
Min kod fungerar fint med Layout.master men med Layout2.master får jag följande fel:
System.InvalidCastException: Unable to cast object of type 'ASP.sites_insikt_layout2_master' to type 'Layout'.
På raden: Layout Template = (Layout)Page.Master;Sv: Hämta variabel från dynamiskt laddad masterpage.
Lösning: Titta på möjligheten att använda ett interface istället. Skapa ett interface, t.ex. ILayout innehållandes egenskaperna Height och Width, låt sedan Layout resp. Layout2 implementera de egenskaperna. I din sida behöver du sedan bara känna till interfacet ILayout:
ILayout Template = (ILayout)Page.Master;
MainContent.Width = Template.Width;
MainContent.Height = Template.Height;Sv:Hämta variabel från dynamiskt laddad masterpage.
Fungerar perfekt nu när jag gjorde som du sa.