Avatar billede lemmings Nybegynder
23. juli 2002 - 16:02 Der er 12 kommentarer og
2 løsninger

Overførsel af URL til Code-behind

Jeg har følgende HTML-kode:

<a href="~/forside.asp" target=_self id="frontpage" runat="server" onserverclick="DoLogOut">Forside</a>

...Hvor funktionen DoLogOut hedder:
       
public void DoLogOut(object sender, EventArgs e)
{
  FormsAuthentication.SignOut();
  Session.Clear();
   
  Response.Redirect("~/forum/login.aspx");   
}

Den skal ved valg af linket, logge en bruger af ved at fjerne authentification. Det er også ok, det eneste problem jeg dog har er at jeg kun kan redirecte til en specifik side, og <a href="...> gentages for flere punkter på siden, da den er en del af en menu.

Er det ikke muligt at få overført selve URL'en i AnchorTag'et? Hvis Response.Redirect("~/forum/login.aspx") fjernes, vil man forblive på den side hvorpå man har trykket/klikket på linket.

¨Håber dette giver mening nok til at give en hjælpende hånd!

/Lemmings
Avatar billede dgivoni Nybegynder
23. juli 2002 - 16:15 #1
jeg forstår ikke helt hvad det er du vil? kan du forklare det nærmere...
Avatar billede lemmings Nybegynder
23. juli 2002 - 16:30 #2
Lad mig prøve!

Jeg har en funktion DoLogOut der aktiveres i en AnchorTag når der bliver klikket på et link.
DoLogOut fjerner autorisationen af brugen og bliver i ovennævnte situation redirected til login.aspx.

Nu er det bare således, at det AnchorTag er en af mange idet der er lave en menu, og hver af AnchorTagene har deres egen URL samt eget ID, men kalder samme funktion DoLogOut. Istedet for at resultatet hver gang er at man sendes til login.aspx, istedet bliver sendt til hver AnchorTags respektive URL.

************************
EKSEMPEL

<A HREF="forside.asp" onserverclick="DoLogOut" Runat="server">Forside</A>
<P>
<A HREF="nyheder.asp" onserverclick="DoLogOut" Runat="server">Nyheder</A>
<P>

***********************
Uanset hvad jeg her vælger bliver jeg enten redirected til login.aspx (hvis jeg skriver det i funktionen) eller forbliver på den aktuelle side hvor jeg klikkede på linket.
Avatar billede dgivoni Nybegynder
23. juli 2002 - 16:36 #3
ok, nu fatter jeg det. Så er det bare lige om jeg ved hvordan det løses :-)
Avatar billede guidmaster Nybegynder
23. juli 2002 - 16:38 #4
Kunne du ikke bare sende "forside.asp" med ind i din DoLogOut ???
Avatar billede odegaard Nybegynder
23. juli 2002 - 16:56 #5
Hvis du kalder den samme funktion, så kan du jo spørge på hvilket link der blev trykket på, og så redirecte efter dette.
Avatar billede odegaard Nybegynder
23. juli 2002 - 16:57 #6
...i så fald skal du lige sætte et ID på dine webcontrols (som jo ellers ikke ligner webcontrols. Det er så ID'et du kan spørge på.
Avatar billede dgivoni Nybegynder
23. juli 2002 - 17:09 #7
hvis du laver den om til en hyperlink webcontrol kan du spørge på NavigateUrl for at få url'en:

<asp:hyperlink ...

og

(HyperLink) sender.NavigateUrl
Avatar billede odegaard Nybegynder
23. juli 2002 - 17:20 #8
Jeg tillader mig lige at skrive i VB.NET. Tjek dette eksempel. Det skulle herefter være rimelig nemt at erstatte response.write med response.redirect:
-----------------
<%@ Page Language="VB" %>
<script language="VB" runat=server>

Sub Page_load(obj as Object, E as EventArgs)
End Sub


Sub DoLogOut(Sender as Object, E as EventArgs)
   
response.write("Du har klikket på objektet " & sender.ClientID.ToString())

End Sub

</script>

<html><head>
<title>Udlæsning af variabler i ASP.NET</title>
</head><body>

<h2>Udlæsning af variabler i ASP.NET</h2>

<form runat=server>
<a href="dasd" ID="link1" Text="link nummer 1" onServerClick="DoLogOut" runat="server">Link 1</a>
<br />
<a href="dasd" ID="link2" Text="link nummer 2" onServerClick="DoLogOut" runat="server">Link 2</a>

<asp:label id="statustext" visible="false" runat="server" />

</form>
</body></html>
Avatar billede odegaard Nybegynder
23. juli 2002 - 17:31 #9
dgivorni: Hvad jeg også først lige tog fejl af, var at <asp:hyperlink> tilsyneladende ikke laver nogen form for postback.
Avatar billede dgivoni Nybegynder
23. juli 2002 - 20:35 #10
nå, det var jeg ikke klar over. Jeg gik da ud fra at alle servercontrols giver mulighed for at 'fange' dem serverside.
Avatar billede odegaard Nybegynder
23. juli 2002 - 20:44 #11
Også jeg, men jeg kunne ikke finde noget i SDK'en, og en test af det, så ud som om den ikke laver postback (tjek den genererede kode).
Avatar billede lemmings Nybegynder
24. juli 2002 - 08:52 #12
odegaard>> Ja, den virker ok, i hvert fald så lenge den kører i på en .aspx side. Det gør min menu desværre bare ikke, den er oprettet som en .ascx side (UserControl) og ClientID'et bliver derfor ID'et på UserControllen navngivet på .aspx-siden.

Dvs. at ser man på linket ved kørsel af siden fås følgende URL (hvor Usercontrollen har ID=menu på .aspx siden):
java script:_doPostBack('menu:link1','')
hhv:
java script:_doPostBack('menu:link2','')

-og hvis man derefter vælger sender.ClientID.ToString() får man Responsen "menu" som jo er ID'et på objektet fra .aspx siden.

Andre gode råd/ideér???
Avatar billede lemmings Nybegynder
24. juli 2002 - 09:17 #13
HA!!! Nu fandt jeg en mulig løsning - meeen grundet andre forhold giver det kun problemer for mig selv. Jeg kører en koblet asp og asp.net side (hvorfor mit link i første omgang også blev omtalt .asp). Det giver en masse andre problemer, som jeg ikke har tid til at løse umiddelbart.

Min egen løsning på hvordan jeg fik fanget den URL som Anchortaget videregav lyder således (skrevet i C#):

********
/// Her fanges først HtmlControllen
protected System.Web.UI.HtmlControls.HtmlAnchor forside;
protected System.Web.UI.HtmlControls.HtmlAnchor news;

/// Hop i koden
public void DoLogOut(object sender, EventArgs e)
{
  FormsAuthentication.SignOut();
  Session.Clear();
       
  string URL = news.HRef.ToString();
  Response.Write("Din link er: " + Server.MapPath(URL));
}

- Jeg skriver dette for at eventuelle andre kan gøre brug af dette!
Og som tak for hjælpen og tiden I har lagt i det vil jeg lige give lidt point til jer...fordelt efter hvad jeg fik flest idéer ud fra!

/lemmings
Avatar billede odegaard Nybegynder
24. juli 2002 - 12:29 #14
Blander du ASP og ASP.NET ??????????????????????
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester