升级到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
的原因有关。
如果您为子yout/rendering启用了缓存,那么这是预期的行为,因为渲染的HTML是缓存的,并且在第一次加载后不会触发服务器端代码。这意味着Page_Load事件将不会重新触发,按钮的Click事件也不会重新触发。
检查是否存在缓存问题的最简单方法是清除缓存(通过/sitecore/admin/cache.aspx),看看是否触发了您的事件。您也可以通过设置cacheHtml="false"
来禁用元素中的缓存。这将帮助您识别缓存问题,您应该通过禁用该控件的缓存来解决根本问题。