none
Cross page posting inactif RRS feed

  • Question

  • Bonjour,

    Voici le contexte : j'ai une page aspx sur laquelle il y a l'image d'un complexe sportif. Lorsqu'on clique sur une partie de l'image, une nouvelle fenêtre s'ouvre avec d'autres photos liées à la partie de l'image principale sélectionnée.

    Pour le moment, je n'en suis pas à afficher les images secondaires, je cherche simplement à récupérer la valeur du PostBackValue présent sur les PolygonHotSpot.

    Pour mettre en place ça, j'utilise ImageMap et les HotSpot. Ci-dessous, la page aspx avec l'image principale :

     

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage_aec.master" AutoEventWireup="true" CodeFile="passeio_virtual.aspx.cs" Inherits="passeio_virtual" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
     <h2>Passeio Virtual</h2>
     <p>Conheça um pouco mais do <b>Acesita Esporte Clube</b>, através do passeio virtual.</p>
     <asp:ImageMap ID="ImageMap1" runat="server" 
     ImageUrl="~/App_Themes/theme_aec/Images/passeio_virtual.jpg"
     HotSpotMode="PostBack" onclick="ImageMap1_Click">
     <asp:PolygonHotSpot AlternateText="Sede Social - Bailes e Festas" 
      Coordinates="138,26,210,18,222,30,221,34,146,44,138,28" HotSpotMode="PostBack" 
      NavigateUrl="detalhe_passeio_virtual.aspx" Target="_blank" PostBackValue="sede_social" />
     <asp:PolygonHotSpot AlternateText="Churrasqueiras" 
      Coordinates="247,8,239,25,252,30,312,38,314,20,304,12,248,7" 
      HotSpotMode="PostBack" NavigateUrl="~/detalhe_passeio_virtual.aspx" 
      PostBackValue="Churrasqueiras" Target="_blank" />
     </asp:ImageMap>
    </asp:Content>
    
    
    

     

    Le code en C# sur la page principale pour créer la propriété qui récupère la valeur du PostBackValue :

     

    using System;
    using System.Web.UI.WebControls;
    using System.Web;
    
    public partial class passeio_virtual : System.Web.UI.Page
    {
     private string _secteur;
    
     protected void ImageMap1_Click(object sender, ImageMapEventArgs e)
     {
     _secteur = e.PostBackValue;
     }
     public string secteur
     {
     get { return _secteur; }
     set { _secteur = value; }
     }
    }
    

    Dans un premier temps j'essaye de récupérer la valeur dans secteur pour l'afficher dans la page secondaire :

     

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="detalhe_passeio_virtual.aspx.cs" Inherits="detalhe_passeio_virtual" %>
    <%@ PreviousPageType VirtualPath="~/passeio_virtual.aspx"%>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
     <title>Detalhe Passeio Virtual</title>
    </head>
    <body>
     <form id="form1" runat="server">
     <asp:ScriptManager ID="ScriptManager1" runat="server">
     </asp:ScriptManager>
     <div>
     <asp:Label ID="Label1" runat="server"></asp:Label>
     </div>
     </form>
    </body>
    </html>
    
    
    Le code-behind :

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class detalhe_passeio_virtual : System.Web.UI.Page
    {
     protected void Page_Load(object sender, EventArgs e)
     {
     if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
     {
      string test = PreviousPage.secteur;
      Label1.Text = test;
     }
     }
    }
    


    Je n'arrive jamais sur la deuxième page...


    A priori, mon pb vient du fait que le lien entre la page principale et la page secondaire ne se fait pas. Dans l'absolu je peux le comprendre puisque je n'utilise pas d'attribut PostBackURL.

     

    Cependant, cet attribut n'existe pas pour la classe ImageMap... Me suis-je piégé ?

    Y a t il une solution pour mettre en place mon Cross Page Posting, ou dois je me rabattre sur le Transfert.Server ?

     

    Merci d'avance pour vos idées !!

     

    Nicolas



    vendredi 12 août 2011 20:04

Réponses

Toutes les réponses

  • Bonjour,

    Je ne suis pas sûr d’avoir bien compris ce que vous voulez faire, mais pour afficher la page secondaire, la propriété HotSpotMode de votre asp:PolygonHotSpot doit avoir la valeur Navigate, vu que avec PostBack vous ferez un simple postback vers le serveur. Ensuite, l’attribut HotSpotMode d’ImageMap spécifie les valeurs par default de chaque HotSpot, mais si vous redéfinirez ces valeurs HotSpot.HotSpotMode est prise en compte.

     

    Puis, la classe ImageMap ne contient pas l’attribut PostBackURL (coir ce lien). Donc, svp expliquez-nous de nouveau ce que vous voulez faire pour pouvoir vous aider. Merci d’avance!

     

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.


    mercredi 17 août 2011 14:05
  • Bonjour,

     

    J'espère ne pas arriver au bout de ta patience, mais en effet, je me suis aperçu en lisant plus en détail les infos sur la class ImageMap sur le site de MSDN que mon code était un peu incohérent.

    Pour explication, ce n'était pas mon premier jet, mais des essais pour arriver à faire ce que je veux faire.

    Voici l'idée : à partir d'un objet ImageMap contenant plusieurs membres HotSpot, un clique sur un de ces membres amène toujours sur la même page (detalhe_passeio_virtual.aspx). Mais, en fonction d'un paramètre transmis d'une page à l'autre, la page detalhe_passeio_virtual.aspx n'affiche pas le même ensemble d'images.

    Pour passer le paramètre, je voulais utiliser l'attribut PostBackValue. Cependant, celui ne fonctionne qu'avec le HotSpotMode sur PostBack. Ce qui signifie que je n'ouvre pas directement une fenêtre à partir de l'ImageMap, mais je dois utiliser le Transfer.Server dans mon code-behind (ou faire du code client, mais je ne m'y connais pas encore suffisamment).

    D'où une tentative de passer par le HotSpotMode Navigate. Ce mode permet d'ouvrir une nouvelle fenêtre, mais malheureusement, hypothèque complètement l'utilisation de l'attribut PostBackValue.

    En dernier recours, j'ai tenté quelque chose avec l'attribut PostBackUrl. Mais là aussi, cela n'a rien donné...

    Est-ce plus clair ?

    Merci pour ton retour.

    Nicolas

    mercredi 17 août 2011 22:42
  • Bonjour,

    Merci de vos explications. Maintenant c’est clair ce que vous voulez faire.

    Pourquoi vous n’essayez pas avec le paramètre envoyé par le QueryString et le HotSpotMode avec la valeur Navigate ? Est-ce que vous avez des limitations qui ne vous permettent pas utiliser cette méthode ?

     

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.


    • Marqué comme réponse Philomelo jeudi 18 août 2011 12:08
    jeudi 18 août 2011 06:47
  • Bonjour,

    Non, aucune limitation particulière.

    C'est une solution que je connais d'ailleurs, mais je l'ai laissée de coté en me focalisant sur le posback.

    Je crois que maintenant je tiens ma solution.

    Merci !

    Nicolas

    jeudi 18 août 2011 12:08