升级到Sitecore 7.2后未触发按钮单击事件

本文关键字:按钮 单击 事件 Sitecore | 更新日期: 2023-09-27 18:26:34

我最近从Sitecore 6.5升级到了Sitecore 7.2。我已经解决了许多问题,重构了搜索等。然而,在主页以外的页面上,由于__doPostback未定义,我的<asp:Button />没有提交表单。为了解决这个问题,我在布局中添加了一个<asp:ScriptManager />,现在javascript在单击时启动,表单被提交/重新加载。

我现在遇到的问题是,我的服务器端点击事件处理程序没有为该页面上的任何按钮启动。

以下是我的代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Login Page.ascx.cs"
    Inherits="MyProject.layouts.Login.Login_Page" %>
<asp:Button ID="TestButton" runat="server" OnClick="TestButton_OnClick" />

而我的密码隐藏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MyProject.layouts.Login
{
    public partial class Login_Page : System.Web.UI.UserControl
    {        
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void TestButton_OnClick(object sender, EventArgs e)
        {
            throw new Exception("Clicked");
        }
    }
}

单击时,事件永远不会被激发。有什么想法吗?我想这可能与页面没有定义__doPostback的原因有关。

升级到Sitecore 7.2后未触发按钮单击事件

如果您为子yout/rendering启用了缓存,那么这是预期的行为,因为渲染的HTML是缓存的,并且在第一次加载后不会触发服务器端代码。这意味着Page_Load事件将不会重新触发,按钮的Click事件也不会重新触发。

检查是否存在缓存问题的最简单方法是清除缓存(通过/sitecore/admin/cache.aspx),看看是否触发了您的事件。您也可以通过设置cacheHtml="false"来禁用元素中的缓存。这将帮助您识别缓存问题,您应该通过禁用该控件的缓存来解决根本问题。