1

サイトの検索フォームが IE で正しく動作しません (IE8 と IE7 を試しました) linkBut​​ton または checkBoxes をクリックすると、ポストバックが起動し、すべてのフィールドがリセットされます。以前に見つかった結果もすべてリセットされ、ページは最初に読み込まれたかのように空になります。

これは FF や Chrome では発生しません。

Fiddler を実行して何が起こっているかを確認すると、ページは問題なく動作し、ポストバックによってすべてのデータが返されます。Fiddler がそれを修正したので、IE がサーバーに送信したクエリの何が問題なのかわかりません。

では、コードを見てみましょう。まず最初に、.Net コンテンツを呼び出す HTML ページ:

<iframe width="605" scrolling="AUTO" height="6000" frameborder="NO" marginwidth="0" marginheight="0" src="http://[MYSERVERNAME]/xml/dialog/rechercher.aspx?L=FR" id="iframe_"></iframe>

次に、ASPX ページ ファイル "rechercher.aspx" :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="~/xml/Dialog/rechercher.aspx.cs" Inherits="xml_Dialog_rechercher" %>

<!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>Recherche</title>
    <link rel="stylesheet" href="css/screen.css" />
    <script type="text/javascript" src="js/dialog.js"></script>
    <!-- other js calls -->
</head>
<body style="background-image:url('/lib_central/images/ACTIV/common/bgd_main.gif');background-repeat:repeat-y;">

    <form runat="server">

        <!--
            some presentation code
            ...
        -->

        <!-- sample of one of the search fields -->
        <label for="motsClefs" class="bold"><% Response.Write(get_label("motcle")); %></label><br />
        <asp:TextBox ID="rech_kw" runat="server" value="" ForeColor="#999999" Width="250"></asp:TextBox>

        <!-- The validation field -->
        <asp:LinkButton ID="rech_valide" OnClick="lancer_recherche" runat="server" CssClass="boutons rechercher inlineBlk" >
        <span class="rechercher"><span class="alt_text">rechercher</span></span></asp:LinkButton>
        <br class="clear" />

        <%-- Results displaying --%>
        <div ID="resultats" class="contentDia alignementBlk" runat="server"></div>


        <!--
            some footer code
            ...
        -->

        <!-- Tell the parent page to stretch according to the number of results -->
        <script type="text/javascript">
            $('#iframe_666', window.parent.document).height(100+$(".contentDialogue").height());
        </script>
    </form>
</body>
</html>

そして最後に.Netコードビハインド:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Xml.Linq;
using UsersData;

public partial class xml_Dialog_rechercher : System.Web.UI.Page
{
    string keyword = ""; // Champ de saisie texte
    List<DLG_Questions> list_q;
    public string lang;


    // Au chargement de la page
    protected void Page_Load(object sender, EventArgs e)
    {

    }


    // If the form validation button is clicked
    protected void lancer_recherche(object sender, EventArgs e)
    {
        // If user typed something in search field
        if (get_filters())
        {
            // Query the data layer to retrieve what is searched
            this.list_q = DialogManager.recherche(this.keyword);

            // Display resultst
            if (this.list_q.Count == 0)
            {
                resultats.InnerHtml = "no results";
            }
            else
            {
                resultats.InnerHtml = display_question_list();
            }
        }
    }



    // "Read" input field controls.
    // If all empty => return FALSE
    // if some contains data => Save that data and return TRUE
    protected bool get_filters()
    {
        // ...

        return ret;
    }


    // Return a HTML of the list of themes searched
    public string display_question_list(){
        // ...
    }


    // Internationnalisation allow me to display labels in different languages
    protected string get_label(String cle)
    {
        // ...
    }
}
4

0 に答える 0