12

私が直面している問題は、ページに検証があり、モデルのポップアップを表示しようとすると、ポップアップが表示されないことです。fire-bug を使用して、エラーが発生していることに気付きました。

ポップアップを表示するために使用されるボタンの原因検証が false に設定されているため、エラーの原因がわかりません。

私が抱えている問題を特定するためにサンプル ページを作成しました。

エラー

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>

コードビハインド

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();
        }
    }
}
4

7 に答える 7

6

これは、ValidationSummary と ModalPopup の両方を使用する際の問題です。

ここを参照してください: http://ajaxcontroltoolkit.codeplex.com/WorkItem/View.aspx?WorkItemId=12835

問題は、「;」が欠落していることです。挿入された 2 つのスクリプトの間。

彼らの解決策は、「;」を挿入する ValidationSummary から継承するカスタム サーバー コントロールを作成/使用することです。バグを修正するためにページ起動スクリプトに追加します。

[ToolboxData("")]
public class AjaxValidationSummary : ValidationSummary
{
  protected override void OnPreRender(EventArgs e)
  {
    base.OnPreRender(e);
    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), this.ClientID, ";", true);
  }
}
于 2010-04-26T15:40:59.720 に答える
4

このイベントで ValidationSummary の "Enabled" プロパティを false に設定してみてください: "btnPush_Click" ; 次に、このイベントで「btnOK_Click」、「btnCancel_Click」を有効に = 「true」に戻します。

ポップアップしたいパネル内に検証サマリーがない場合、これはうまくいくと思います。しかし、ポップアップパネル内に検証サマリーが必要な場合、それは解決策ではありません...魔女は私の場合です:( .

よろしくお願いします。

于 2009-10-05T07:45:38.493 に答える
3

利用可能なすべての回答をオンラインで試しましたが、うまくいきませんでした。次に、モーダル ポップアップ エクステンダを HTML の最後に移動しようとしましたが、問題なく動作します。私と私のユーザーは幸せです:)私はFROMタグを使用していません私は以下のようにコンテンツプレースホルダーを使用しています:

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
 <table id="tblMessage" runat="server" width="100%" >
    <tr align="center">
        <td align="center">

メインコンテンツと

<asp:Panel ID="pnlSelectClient" Style="display: none" CssClass="box" runat="server">

  <asp:ValidationSummary ID="ValidationSummary1" 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>

ポップアップ内にエラーメッセージが必要なため、パネル内に検証の概要があることに気付いた場合(ポップアップにも追加のコントロールがあります)。と

1 つのページで行うべきことが他にもたくさんあるので、ここに HTML タグをいくつか追加します。TABLEの終了タグの直前

<ajaxToolkit:ModalPopupExtender ID="mpeSelectClient" runat="server" 
    TargetControlID="popupDummy"
    PopupControlID="pnlSelectClient" 
    OkControlID="popupDummy"
    BackgroundCssClass="modalBackground" 
    CancelControlID="btnCancel" 
    DropShadow="true"  />

</table>

完了。動作しています。それが他の人にも役立つことを願っています。

于 2013-03-27T20:21:32.790 に答える
2

ページのどこかで検証グループを使用していますか? コントロール イベントが検証グループの一部ではなく、ページ上の他のコントロールが検証グループの一部である場合に、コントロール イベントが発生しないという問題がありました。

于 2009-09-23T13:40:17.360 に答える
1

これを変更してみます:

<input id="popupDummy" runat="server" style="display:none" />

このようなものに:

<asp:Button id="popupDummy" runat="server" CausesValidation="false" Visible="false" />

型指定されていない入力には検証が必要だと思います。

于 2009-09-23T13:41:41.857 に答える
0

クライアント スクリプトが必要ない場合は、マークアップで無効にできます。そうすることで問題が解決しました。

EnableClientScript="false"
于 2014-02-24T14:44:32.187 に答える
0

ValidationGroup私は同じ問題を抱えていました.検証コントロールに追加するとうまくいきました!

于 2013-03-14T16:39:14.397 に答える