Méthode pour contourner les frames

0/5 (1 avis)

Snippet vu 13 073 fois - Téléchargée 34 fois

Contenu du snippet

Voilà, il s'agit d'une méthode qui permet d'éviter l'utilisation des frames. (Pour ceux qui, comme moi les ont en horreur ...)
On crée donc une page principale (ici index.aspx) qui servira à contenir les autres pages appelées à partir des liens.
Je crois que le code est assez clair, testez le.

Source / Exemple :


' //// index.aspx.vb

Imports System.Data.SqlClient
Imports System.IO
Imports System.Collections.Specialized

Public Class index
    Inherits System.Web.UI.Page

    Public HTM As New StringWriter
    Public lien As String

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   Try
      Dim pos As Long = InStr(1, Request.RawUrl.ToString, "p=")
      If (pos > 0) Then
         Dim lien_int As String = Right(Request.RawUrl.ToString, (Len(Request.RawUrl.ToString) - pos - 1))

'On verifie l'existence d'un autre paramètre dans le querystring
         pos = InStr(1, lien_int, "&")
         If (pos > 0) Then
            lien_int = Left(lien_int, (pos - 1)) & ".aspx?" & Right(lien_int, (Len(lien_int) - pos))
         Else
            lien_int = lien_int & ".aspx"
         End If
         lien = lien_int
         Server.Execute(lien, HTM)
       Else
         Server.Execute("test.aspx", HTM)
       End If
    Catch ex As Exception
      Response.Write(ex.ToString)
    End Try
End Sub

end class

' //// index.aspx
<table>
   <tr>
     <td><img src="uneimage"></td>
   </tr>
   <tr>
     <td>
        <table>
          <tr>
            <td align="left" valign="top">
                <a href="index.aspx?p=test>Page de test</a>
                'on peut envoyer des paramètres dans le querystring
                <a href="index.aspx?p=test2&t=bonjour>Page de test 2</a> 
            </td>
            <td><% response.write (htm.tostring) %></td>
          </tr>
        </table>
      </td>
    </tr>
</table>

----------------------------------------------

' //// test.aspx 

<table><tr><td>Page test</td></tr></table>

----------------------------------------------

' //// test2.aspx 

<table>
   <tr>
     <td>
        Page test2
       <% response.write(request.querystring("t") %>
     </td>
   </tr>
</table>

Conclusion :


On a donc la possibilté d'envoyer des paramètres en Querystring aux pages appelées, mais pour ça, il faut que ceux ci soient placé après le paramètre "p" et non avant sinon ceux ci sont envoyés à la page index.aspx

Exemple
<a href="index.aspx?o=untest&p=test&o2=unautretest>Unlien</a>
le paramètre o sera envoyé à la page index.aspx et non à test.aspx tandis que o2 sera envoyé aux 2 pages.

Allez j'espère que ça aidera , ciao

A voir également

Ajouter un commentaire Commentaire
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Connais tu les UserControls, les fichiers ascx ?

c'est beaucoup plus simple que ca, et bien plus performant ! ta technique c'est comme un include file tout coté code.

la meme chose que toi mais en beaucoup plus performant car la page "enfant" sera un controle, et aura donc des propriétés que l'on pourra rajouter dans le code de l'enfant

--test.aspx
<% Control langage="VB" codebehind="test.aspx.vb"%>
Page test


--test.aspx.vb
public class test
inherits system.web.userControl
private sub page_load(sender as object, e as eventargs) handle page.load
response.write(now)
end sub
end class

et dans le code de la page

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dim page() as string = request.querystring("page").split;
for each s as page
Page.Controls.Add(Page.LoadControl(s & ".ascx"))
page.load
next
end sub

et l'url sera du type :
index.aspx?page=test;autretest;test

Cyril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.