webForumDet fria alternativet

Redirect och köra funktion

.NET

5 svar · 815 visningar · startad av Sanji

Medlem sedan juli 2009355 inlägg
Frågan#1

Hej! Jag har en knapp på en sida som ska skicka användaren vidare till en annan sida, och väl där så ska en funktion köras direkt som finns i den nya sidans code-behind. Hur åstadkommer jag detta på ett enkelt sätt?

Medlem sedan juli 2009355 inlägg
#2

Updatering:

det här är vad jag gjort hittills:

kod på sidan med knappen:

protected void btnAddInquiry_Click(object sender, EventArgs e)
        {
            HiddenField hidden = new HiddenField();
            hidden.Value = "1";
           // Response.Redirect("inquiry.aspx");
        }

Kod på målsidan som ligger i pageload:

if (Page.PreviousPage != null)
            {
                HiddenField SourceHiddenfield = (HiddenField)Page.PreviousPage.FindControl("hidden");
                if (SourceHiddenfield.Value != "")
                {
                    addnewinquiry();
                }
            }

det verkar inte som att målsidan hittar kontrollen, vad kan vara fel?

Mvh Sanji

Medlem sedan nov. 200177 inlägg
#3

PreviousPage fungerar bara om du använder Server.Transfer (istället för Reponse.Redirect)

Det du också kan göra är att använda dig av QueryString:s. Om du tittar i adressfältet i browsern när du läser denna tråd så avslutas adressen med "?t=180293" och det är det som kalla QueryString. Där "t" är parametern och sen kommer värdet för den. Vill man skicka fler värden skriver man bara "?t=180293&p=1&kallekula=rolig".

Så du skulle kunna skriva din redirect så här

Response.Redirect("inquiry.aspx?parameterNamn=1");

Sen på din målsida skriver du så här

string strParm = Request.QueryString("parameterNamn");
Medlem sedan juni 20003 076 inlägg
#4

Sanji skrev:

Hej! Jag har en knapp på en sida som ska skicka användaren vidare till en annan sida, och väl där så ska en funktion köras direkt som finns i den nya sidans code-behind. Hur åstadkommer jag detta på ett enkelt sätt?

Varför inte göra tvärsom? Köra funktion och sedan redirect.
Det är alltid farligt att komma till en sida som kör en funktion. Då är det bara att trycka F5 så körs funktionen igen, och igen och igen.

Medlem sedan feb. 20041 816 inlägg
#5

doggelito skrev:

Varför inte göra tvärsom? Köra funktion och sedan redirect.
Det är alltid farligt att komma till en sida som kör en funktion. Då är det bara att trycka F5 så körs funktionen igen, och igen och igen.

Det var lite tokigt formulerat men jag tror jag förstår vad du menar. Jag utvecklar lite, hoppas att det är ok. :)

Följer man Http-RFC:n (specifikationen) är detta ett icke-problem. Enkelt sagt är en redirect i praktiken en GET, dvs samma sak som om användaren skrivit in adressen i webbläsaren. Enligt specen ska GET-requests vara idempotent, dvs upprepade requests skall inte få några följdeffekter om man laddar om sidan en, två eller n antal gånger. Lägger man till nya poster vid t.ex. onload strider det mot den principen. Vad man istället borde göra är att lägga till dem vid POST - dvs vid postback för att använda WebForms-uttryck - och sedan redirect:a. Följer man PRG-mönstret kan man förhindra att fler poster läggs till efter en postback om användaren skulle ladda om sidan.

Medlem sedan juli 2009355 inlägg
#6

nu har jag fixat så att det skickas med ett värde i länken, och en if-sats som förhindrar att funktionen körs mer än en gång:

if(!isPostBack)
{
if(Request.Querystring["newInquiry"] == "1")
{
}
}

funktionen körs som den ska och alla värden osv. visas, men det finns ett problem... layouten blir jättekonstig när jag går via knappen istället för att gå dit utan att köra funktionen. allting blir större och lite felplacerat. varför blir det så?

*Edit
Jag hade en text som skrevs ut som jag tidigare hade använt vid felsökning, och det var den som förstörde layouten ^^ tog bort den så nu fungerar det fint :) tack för hjälpen!

Mvh Sanji

262 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)