1

私のコードが間違っている理由を教えてください。登録フォームとなる UserControl を作成したいと考えています。このコントロールにはボタンがあり、ボタンをクリックすると、サーバーが別のページにリダイレクトするようにします。これが私のコードです:

コントロール.ascx.cs:

public partial class ControlFormulaire : System.Web.UI.UserControl
{
    public event EventHandler ButtonClicked;// it could be named differently obviously
    protected void ValidateButton_Click(object sender, EventArgs e)
    {
               if (this.ButtonClicked != null)
                    ButtonClicked(this, new EventArgs());
    }

    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

フォーム.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    this.SubscribForm.ButtonClicked += new EventHandler(SubscribForm_ButtonClicked); 
}

void SubscribForm_ButtonClicked(object sender, EventArgs e)
{
    Response.Redirect("WebForm2.aspx");
}

それが私のform.aspxです:

<%@ Register TagPrefix="uc" TagName="Form" Src="~/ControlFormulaire.ascx"%>
<uc:Form ID="SubscribForm" runat="Server" MinVal="1" MaxVal="10" />
4

2 に答える 2

0

この行がキーであるか、カスタム クリック イベントが updatepanel を無視します
// ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(this);

ページ定義の IPostBackEventHandler 部分に注意してください

この例では、通常のボタンとカスタム クリック イベント div が更新パネル内で連携します。

パブリック部分クラス tmp2 : System.Web.UI.Page、IPostBackEventHandler {

protected void Page_Load(object sender, EventArgs e) { ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(this); if (!Page.IsPostBack) { div1.Attributes["onclick"] = ClientScript.GetPostBackEventReference(this, "ClickDiv"); } } protected void Button1_Click(object sender, EventArgs e) { Label1.Text += "1"; UpdatePanel1.Update(); } protected void Div1_Click() { div1.InnerHtml += "b"; UpdatePanel1.Update(); } public void RaisePostBackEvent(string eventArgument) { if (!string.IsNullOrEmpty(eventArgument)) { if (eventArgument == "ClickDiv") { Div1_Click(); } } }

}

于 2014-11-14T05:49:46.767 に答える