På den side du kommer til, må du manipulere det du skal vise udfra det der er postet. Du skal ikke fra den side der postes fra pille ved den side der efterfølgende vises. Hvis du vil hente oplysninger fra den side du kommer fra, kan du sætte PostBackUrl til en anden side, og i koden på den side kan du så:
if(!IsPostBack) { Page previousPage = Page.PreviousPage; if(previousPage != null) { // ... her kan du så kigge på siden du kommer fra } }
Det der så er balladen er, at du dels skal udstille de oplysninger du vil have fat i fra sender-siden som public metoder/properties, og du skal kende typen på siden for at tilgå dem.
Hedder din klasse (for den side du kommer fra) SenderPage kan du: if(!IsPostBack) { SenderPage sender = Page.PreviousPage as SenderPage; if(sender != null) { HyperLink link = sender.Link; } }
Hvilket så igen kræver, at du gør dit hyperlink pulic på den side du kommer fra, eller bedre endnu - laver en property der indpakker det du ønsker at kunne tilgå - f.eks.:
public string LinkText { get { return someLink.Text; } }
Du kan også sætte sender-siden type i et directive på din modtager side - så undgår du at caste PreviousPage til din egen type.
siderne er total uafhængige af hinanden...det er to seperate .aspx sider man kan tilgå via min menu...dvs. man kommer ikke fra nogen bestemt side eller lign. som du måske antager...!?
Det antager jeg naturligvis.... Kan ikke se noget formål med at ændre noget på en side hvis man ikke er på vej til at se den. Den findes jo ikke før den eksekveres ved tilgang.
Hvis det du er ude efter er, at gemme en tilstand i din applikation, som du så vil bruge på vilkårlige sider - har du en masse andre muligheder til rådighed. QueryString, Cookies, Sessionstate, Applicationstate, Cache, Profiles og statiske og/eller "globale variable" + context. Desuden kan du self. lave din egen customløsning.
Fortæl hvad det er fra den ene side du gerne vil have vist på en anden side (hvis en bruger skulle hoppe hen på den). Og... Fortæl om det der skal vises på den anden side er specifikt for den enkelte bruger, eller om det er fælles for alle brugere.
okay...here we go...all brugere kan tilgå en download side... fra administration-upload-siden skal det være muligt, at udskifte en af de tilgængelig filer(hyperlinks) som befinder sig på download siden.
Dvs. hvis brugerne NU kan hente en fil ved navn "fil1.zip" fra download siden...skal det fra admin siden være muligt at uploade en fil som fx. hedder "ny_fil.zip" og den skal nu erstatte fil1.zip, da det i dette tilfælde, kun må være den nyeste fil som må ligge på serveren.
I code behind filen til upload side, findes naturligvis click metoden som gør: - den eksisterende fil bliver slettet - den nye fil bliver uplaodet
og det sidste jeg så ønskede var, at rette hyperlinket på download siden i samme metode, så var alt nemlig klaret ét sted.
Jeg ER klar over, at jeg kunne gemme teksten "ny_fil.zip" i session objektet eller lign...og så opdatere det hvér gange brugeren klikker på download i menuen...dette finder jeg sog ikke optimalt...
Det var en lang forklaring på noget umiddelbart ret simpelt...hehe...håber du er mere med nu...?
Nej det er bestemt heller ikke optimalt - det vil jo i givet fald forsvinde når din applikation genstarter. Jeg ville bare generere listen udfra de filer der aktuelt ligger i folderen... Et hurtigt eksempel på en oversigt over filer:
// i page_load: GridView grid = new GridView(); form1.Controls.Add(grid);
Har du et gridview på siden: <asp:GridView id="grid" runat="server" />
Kan du self. blot (i page_load) if(!IsPostBack) { grid.DataSource = System.IO.Directory.GetFiles(<din path>); grid.DataBind(); }
Bemærk at du kan få mange flere oplysninger om filerne, hvis du benytter DirectoryInfo istedet, så du istedet databinder til GetFiles på et DirectoryInfo objekt.
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(); grid.DataSoure = dirInfo.GetFiles(); grid.DataBind();
har ik prøvet det endnu...men underligt nok, var det også min oprindelige tanke...hehe, det er vist for sent...:) jeg prøver det om lidt...MEN
...hvis vi nu blot for teoriens skyld skal gøre det med hyperlinket færdigt...så MÅ det da være muligt, at lave en get/set metode for en content page's control og så tilgå den fra en anden side af...?
Ligesom man fx. kan tilgå noget på master pagen fra alle div. content pages, like this: ((MasterPage)Master).HeaderImage1 = "~/Images/banner3.jpg";
Så må det da også være muligt, at tilgå en control på en content pages fra en anden content page...oder was??
Du kan tilgå indholdet på en contentpage fra en anden contentpage som beskrevet.... Du kan få så vidt lade én contentpage kontruere en ny contentpage og vise den hvis du vil, så det er ikke fordi du ikke har mulighederne. Men.... du kan ikke sidestille relationen mellem en content og en master, med den mellem 2 contentpages. I det sidste tilfælder er der ingen relation med mindre du selv skriver den f.eks. som vist. På ethvert givet tidspunkt når du har en contentpage - vil din masterpage også være i live, hvilket overhovedet ikke er tilfældet mellem contentpages. Mvh
hej igen...yes, at med på teorien bag dit sidste indlæg...men forstå stadig ikke hvordan jeg tilgår get/set metode i en content page fra en anden...NU hvor de er total uafhængige. Dvs. ikke kommer i en bestemt rækkefølge eller noget. Derfor kan jeg vel ikke for PreviousPage osv. til noget...du må meget gerne skrive noget ny kode, hvis du er med på hvad jeg mener.
Jeg er ikke med på hvad du mener...? Hvad er det den nye kode skal kunne - som den gamle ikke kan?
Du må lægge den tilstand der påvirker dine sider et sted hvor de sider der er involveret i scenariet kan nå dem. Der er som nævnt masser af muligheder for det.
det er nu meget simpelt...jeg har en menu som indeholde 5 punkter...bla. et som hedder "Download" og et andet som hedder "Upload". På upload siden jeg man uploade en fil til en given mappe på serveren. Når man klikker på Download punktet...så har jeg lavet noget kode i sidens-load metode, som gør følgende: Finder filnanvnet på den eksisterende fil i den mappe som ligger i upload mappen på serveren. Udfra dette, sættes hyperlinkets Text og NavigateUrl property på download siden, således at brugeren nu kan se det nye filnavn og selvfølgelig kan hente filen.
Sådan har jeg lavet det nu! og det virker fint...kan ikke rigtig se andre måder at gøre det på, idet at siderne er fuldstændig uafhængige af hinanden og man jo aldrig ved hvornår der sidst er blevet uploadet en ny fil fra upload siden af...men ret mig hvis jeg er gal på den! :)
Det var det med at du genererede dine links udfra hvad der lå i filsystemet... Mvh
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.