Jag har en default.aspx sida med en menu.ascx. I menyn har jag LinkButtons som ska skicka parametrar till default sidan för att på så sätt ladda rätt fil.
men av nån anledning så förblir mainPage tom.. varför..? (det går ju att fixa med javascript men jag tänkte testa om det gick på annat sätt :)
innan provade jag att ha en funktion i default sidan som definierar satte kontrollens värde:
public void setMainPage(string curPage)
{
ucPage = (UserControl)LoadControl(curPage+".ascx");
}
och anropar den från menu.ascx.cs
private void OnLinkClick(object sender, CommandEventArgs e)
{
this.oIntroPage.setMainPage(e.CommandArgument.ToString());
}
så tycker datorn LoadControl försöker ladda t.ex. "/enfil.ascx" istället för bara "enfil.ascx" .. lite konstigt.. eller kanske inte..? :)
kanske jag kan ändra frågan lite så att den blir mer generell :)
Hur skickar jag helt enkelt med ett värde från en ascx sida till huvud aspx sidan från en länk som finns i ascx filen..?
går det bara om man blandar in javascript (som när man jobbar med vanlig asp eller finns det andra sätt? Om jag har href="default.aspx?content=documentation" o tar emot den med Request.Querystring["content"] funkar det väl bara om man blandar in javascript; alltså att man istället anropar en js metod först o sen submittar den...? Tänkte om det fanns nåt mer "ASP.NET aktigt" sätt o sköta detta eller sköter man sånt här från klient-sidan bäst..? : )
Om det är frågan om en PostBack, alltså du gör en omladdning av samma sida så är sättet att skicka data från din UserControl till din sida via Events.
Events är den lösning som ger dig minst bindningar mellan sidan och kontrollen samtdigt som den är "mest .net" riktigt.
Är det frågan om att skicka information från en usercontrol till en annan sida, så är det valfritt att välja mellan följande lösningar:
I URL med request.Querystring, i ett session object, i cookies hos klienten.
Tack för svaret.. : ) okay, då vet jag.. ska prova igen när jag är hemma.. (så det här med att sätta en variabel i en annan klass via OnLinkClick metoden såsom jag gjorde var åt "ute o cykla" hållet.. : )
Om jag skall vara ärlig, så förstår jag inte riktigt hur du gjort (förklara säkert varför det inte fungerar för dig :) ). Om jag förstått det rätt så har du en koppling mellan din UserControl och din sida via this.oIntroPage.
Om det är så så kommer det aldrig att fungerar eftersom du skapar en ny oIntroPage instance vid varje postback och att din Page_Load() på din sida körs innan din Page_Load() på din control. Vilket betyder att din this.mainPage alltid kommer att vara tom när din Page_Load() för din sida körs.
Dessutom så har du skapat en stark bindning mellan din usercontrol och din sida, vilket är en "No No" grej som man bara inte gör :P
anropas innan (?) user menyns LinkButtons onclick (OnCommand) event triggas (alltså den funktion som var tänkt att sätta mainPage variabeln).. så, precis.. den vart null.. aha.. och det var för att, som du sa, det skapades en ny instans vid varje post_back.. hmm.. oki.. satt just o funderade på hur det förhöll sig.. tack för svaret !!
a du förstod rätt ang. kopplingen.. aha.. det kallas för att man gör "stark bindning".. o e alltså inte bra.. nå, okay.. * tar bort omedelbart * :) Antar att det är principiellt dåligt eftersom user controlen inte blir återanvändningsbar om den är knuten till aspx filen..
hmmm... så.. men.. hur skulle du göra istället..? : ) vanlig href tycks ju enklast men den submittar ju inte så då skickas väl inte nån variabel till default sidan (åtminstone inte automatiskt?) Därför jag tänkte prova med LinkButton istället..
260 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9