Egentlig synes jeg ik cross page postback virker pisse fedt i asp.net. Men der må også være en smartere måde at løse dit "problem" på. Hvorfor poste noget til en anden side, som så kan "håndtere" det. Det er jo derfor der er noget så smart i .net som events, så du kan udføre en handling så snart et event bliver fyret (f.eks. via et tryk på en knap) :)
Jeg vil anbefale dig at lægge public properties på den side du poster fra, og så tilgå dem via dit previous page objekt på den side du poster til. Submitter du fra en side hvor klassen hedder PageFrom - kan du gøre sådan her:
// på den du poster fra public string SomeText { get{return txtName.ToString();} }
// og på den du poster til if(!IsPostBack) { PageFrom from = PreviousPage as PageFrom; if(from != null) { string tekst = from.SomeText; } }
Hvis du vil slippe for at typecaste - kan du direkte i dit page directive angive previous page typen: <%@ PreviousPageType VirtualPath="PageFrom.aspx" %>
Hvorved du kan tilgå dine properties direkte: if(!IsPostBack) { string tekst = PreviousPage.SomeText; }
Tak Snepnet, jeg har fået det første til at virker, med typecasting.
Jeg er lidt i tvivl om hvor jeg skal smide <%@ PreviousPageType VirtualPath="PageFrom.aspx" %> hen...
Mit page directive på TargetPage ser p.t. sådan ud. <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Title" %>
Det er nok fordi jeg formulerer mig temmelig kludret :o) Det skal ikke lige i dit pagedirective ... Det er et directive for sig, så du sætter bare det jeg skrev ind nedenunder dit pagedirective (sorry). Og så hedder din side nok ikke pagefrom.aspx som jeg har brugt :o) Mvh
OK, det virker delvist. Jeg får adgang til properties i PageFrom.aspx fra Default.aspx(jo, brugte navnet PageFrom.aspx ;), når jeg skriver PreviousPage. Men ved run får jeg "Object reference not set to an instance of an object" ved:
string day = PreviousPage.chosenDay;
I PageFrom: public string chosenDay { get { return Calendar1.SelectedDate.Day.ToString(); } }
Jeg komme fra klassisk asp, så OO-tænkning er stadig ret nyt...
Du må debugge ned igennem og se hvad problemet er, men du skal huske at trække de værdier fra PreviousPage udelukkende når der er tale om et crosspage postback. Du kan kun tilgå din previous page når siden køres første gang, og du bliver derfor nød til at checke på IsPostBack ... Gør du det? Du kan evt. vise lidt mere kode. Mvh
Hmm, det jeg gør opfattes åbenbart ikke som crosspage postback. IsCrossPagePostBack er false. Jeg har PostBackUrl default.aspx på en knap på pagefrom.aspx. Hvad kræves der mere før IsCrossPagePostBack på default.aspx er true? Er jeg helt galt på den?!
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.