1


私はこの問題を抱えています:
UpdatePanel に RequiredFieldValidator を持つ TextBox を追加します。
次に、ポストバックで DB に値を追加し、別のページにリダイレクトします。
私の問題は、MyControl を 1 つ追加して [GO] ボタンをクリックすると、ValidationSummary がポストバックを停止しないのはなぜですか? 2番目の問題は、VisualStudioがMyControlクラスを見つけられない理由です(赤で下線を引いてください)が、コンパイル結果はエラーではありませんか?

これはコードです:

デフォルト.aspx

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test Validators</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div>
            <asp:UpdatePanel ID="upAdd" runat="server">
                <ContentTemplate>
                    <asp:Button ID="cmdAdd" runat="server" Text="Add" onclick="cmdAdd_Click" CausesValidation="false" />
                </ContentTemplate>
            </asp:UpdatePanel>
            <hr />
            <asp:UpdatePanel ID="upValidators" runat="server">
                <ContentTemplate>
                    <asp:PlaceHolder ID="phValidators" runat="server"></asp:PlaceHolder>                    
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="cmdAdd" />
                </Triggers>
            </asp:UpdatePanel>
            <hr />
            <asp:Button ID="cmdGo" runat="server" Text="Go" onclick="cmdGo_Click" />
        </div>
        <asp:ValidationSummary ID="valSum" HeaderText="Errors:" ShowSummary="False" ShowMessageBox="True" EnableClientScript="True" DisplayMode="BulletList" runat="server"></asp:ValidationSummary>
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected override void LoadViewState(object savedState)
    {
        base.LoadViewState(savedState);

        List<int> m_oItems = new List<int>();

        if (ViewState["ItemsAdded"] != null)
        {
            m_oItems = (List<int>)ViewState["ItemsAdded"];
        }

        ViewState["ItemsAdded"] = m_oItems;

        foreach (int m_oItem in m_oItems)
        {
            MyControl m_oMyControl = (MyControl)LoadControl("MyControl.ascx");

            phValidators.Controls.Add(m_oMyControl);
        }
    }

    protected void cmdAdd_Click(object sender, EventArgs e)
    {

        List<int> m_oItems = new List<int>();

        if (ViewState["ItemsAdded"] != null)
        {
            m_oItems = (List<int>)ViewState["ItemsAdded"];
        }

        m_oItems.Add(m_oItems.Count);

        ViewState["ItemsAdded"] = m_oItems;

        MyControl m_oMyControl = (MyControl)LoadControl("MyControl.ascx");

        phValidators.Controls.Add(m_oMyControl);
    }
    protected void cmdGo_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid)
            return;

        //Add To DB

        Response.Redirect("http://www.google.it/");
    }
}

MyControl.ascx

<asp:TextBox ID="txtLanguage" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rqrLanguage" runat="server" ErrorMessage="Language not set" ControlToValidate="txtLanguage"></asp:RequiredFieldValidator>
<br />

どうもありがとうダミアーノ

4

0 に答える 0