ModalPopupExtender et les problèmes de validation
Le problème, je suis confronté est que quand il y a de validation sur une page et j'essaie d'afficher un modèle de pop-up, pop-up n'est pas affiché. Et par l'utilisation du feu-bug que j'ai remarqué qu'une erreur est levée.
Le bouton qui est utilisé pour afficher le pop-up a cause de validation défini à false, donc je suis coincé à ce qui est à l'origine de l'erreur.
J'ai créé une page d'exemple pour isoler le problème que je vais avoir, toute aide serait grandement appréciée.
L'Erreur
function () {Array.remove(Page_ValidationSummaries, document.getElementById("ValidationSummary1"));}(function () {var fn = function () {AjaxControlToolkit.ModalPopupBehavior.invokeViaServer("mpeSelectClient", true);Sys.Application.remove_load(fn);};Sys.Application.add_load(fn);}) is not a function
http://localhost:1131/WebForm1.aspx
Line 136
ASP
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="CLIck10.WebForm1" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<!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></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:Button ID="btnPush" runat="server" Text="Push" CausesValidation="false" onclick="btnPush_Click" />
<asp:TextBox ID="txtVal" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtVal" ErrorMessage="RequiredFieldValidator" />
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
<asp:Panel ID="pnlSelectClient" Style="display: none" CssClass="box" runat="server">
<asp:UpdatePanel ID="upnlSelectClient" runat="server">
<ContentTemplate>
<asp:Button ID="btnOK" runat="server" UseSubmitBehavior="true" Text="OK" CausesValidation="false" OnClick="btnOK_Click" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" CausesValidation="false" OnClick="btnCancel_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
<input id="popupDummy" runat="server" style="display:none" />
<ajaxToolkit:ModalPopupExtender ID="mpeSelectClient" runat="server"
TargetControlID="popupDummy"
PopupControlID="pnlSelectClient"
OkControlID="popupDummy"
BackgroundCssClass="modalBackground"
CancelControlID="btnCancel"
DropShadow="true" />
</div>
</form>
Code Derrière
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CLIck10
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnOK_Click(object sender, EventArgs e)
{
mpeSelectClient.Hide();
}
protected void btnCancel_Click(object sender, EventArgs e)
{
mpeSelectClient.Hide();
}
protected void btnPush_Click(object sender, EventArgs e)
{
mpeSelectClient.Show();
}
}
}
- Sont ceux cliquez sur gestionnaire des talons de vide juste parce que vous n'avez pas eu à les remplir encore ou vous êtes exigeant une publication dans le but de cacher le modal popup? Si la publication n'est pas nécessaire de considérer l'utilisation de l'modal popup côté client méthodes pour ouvrir et fermer.
- Je vais être en ajoutant le code pour eux, c'était juste pour démontrer l'erreur que j'avais.
Vous devez vous connecter pour publier un commentaire.
C'est un problème avec l'aide de deux ValidationSummary et ModalPopup.
voir ici: http://ajaxcontroltoolkit.codeplex.com/WorkItem/View.aspx?WorkItemId=12835
Le problème est qu'il manque un ";" entre les deux injecté scripts.
Leur solution est de créer/utiliser un serveur de contrôle qui hérite de ValidationSummary, qui injecte un ";" dans la page de démarrage de script pour corriger le bug:
Essayez de régler votre ValidationSummary "Activé" valeur false à la propriété sur cet événement : "btnPush_Click"
; et de définir ensuite revenir à enabled = "true" sur ces événements : "btnOK_Click" ,"btnCancel_Click".
Je pense que cela fonctionnera si vous n'avez pas le résumé de validation à l'intérieur du Panneau que vous souhaitez afficher.Mais ce n'est pas une solution si vous avez besoin du résumé de validation à l'intérieur de la fenêtre du panneau,...qui est mon cas :(.
Meilleures Salutations.
J'ai essayé toutes les réponses en ligne, mais n'a pas travaillé du tout. Ensuite, j'ai essayé de déplacer mon modal popup extender à la toute fin de l'HTML et il fonctionne très bien pour moi. Moi et mes utilisateurs sont Heureux 🙂
Je ne suis pas à l'aide DE la balise, je suis en utilisant le Contenu de marque comme ci-dessous:
contenu principal et
<asp:Panel ID="pnlSelectClient" Style="display: none" CssClass="box" runat="server">
Si vous remarquez que j'ai récapitulatif de la validation à l'intérieur du panneau parce que je veux message d'erreur à l'intérieur de la fenêtre pop-up(j'ai un certain contrôle supplémentaire dans le pop up trop). et
Peu plus de balise HTML ici, comme je l'ai tellement d'autres choses à faire en une seule page. juste avant la fermeture de la balise de TABLEAU
Fait.c'est le travail. Espérons que les travaux pour les autres aussi.
Êtes-vous à l'aide de groupes de validation n'importe où sur la page? J'ai eu des problèmes avec le contrôle des événements qui ne se déclenche pas quand ils ne font pas partie d'un groupe de validation et d'autres contrôles sur la page font partie d'un groupe de validation.
Je vais essayer de changer cela:
à quelque chose comme ceci:
Je parie que le type d'entrée est exigeant de validation.
j'ai eu le même problème, l'ajout de
ValidationGroup
pour les contrôles de validation a fait l'affaire!Une autre chose à essayer, si vous n'avez pas besoin d'un Script Client, vous pouvez le désactiver dans le balisage. Faire qui a résolu notre problème.