【问题标题】:ASP .NET Telerik Button Click Event Not FiringASP .NET Telerik 按钮单击事件未触发
【发布时间】:2014-11-26 00:47:20
【问题描述】:

我有一个使用 Telerik 控件的网站。登录按钮链接不会触发与其关联的事件。在我的本地开发环境中不会发生此问题。仅当我部署到我的 IIS 服务器时才会发生。

我在 IE 和 Chrome 中运行过它,它的行为方式相同。我有一个 JavaScript 弹出窗口,当您刷新需要单击以访问登录按钮的页面时会触发该弹出窗口。这是一个网站警告,上面写着“通过使用这个网站,您同意..blah blah blah”。它只是 JavaScript,当您单击确认时,它会消失,您可以输入您的凭据并单击登录。

当您点击登录时,JavaScipt 弹出窗口会触发,您必须再次点击确认才能登录。

起初,我注意到我在页面上的脚本中收到“sys is undefined”错误。我查了一下,似乎 web.config 中可能缺少一些关于 Telerik 的内容。我更新了 IIS 服务器的 web.config,问题似乎得到了解决。

不过,它又回来了,我似乎不知道该怎么办。我希望有一些故障排除技巧或其他帮助。我不确定 Telerik 控件在多大程度上导致了这种情况,或者即使它们是。无论如何,没有触发的实际按钮只是一个普通的旧 ASP .NET 按钮。

这里有一些代码:

首先,页面指令上的 AutoEventWireUp 设置为 True:

<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="Default.aspx.cs" Inherits="xxx.Default" %>

按钮本身的 ASPX HTML 在一个表格中(我知道表格是一个糟糕的地方,但我会将此归咎于编写此内容的人。)这是登录按钮:

<td>
<asp:Button ID="login" runat="server" Text="Login" OnClick="Login_Click" SkinID="Button" ForeColor="White" Width="100px" />
</td>

代码隐藏做了一些事情,但这里的重点是它根本不会触发。相反,页面会自行刷新:

        protected void Login_Click(object sender, EventArgs e)
        {
            if (Helper.DoWriteToLogFile())
            {
                Helper.WriteToCLogFile("Default.aspx -- Login_Click() clicked....");
            }
:
:

是的,我已启用日志记录,并且永远不会写入日志文件。

对于实际的 Page_Load 事件,我确实记录了该事件,并且记录确实发生了:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Helper.DoWriteToLogFile())
                {
                    Helper.WriteToLogFile("Default.aspx -- DoWriteToLogFile is enabled.");
                }
:
:

因此,我知道日志记录有效。我知道页面加载有效,但我似乎无法启动登录按钮。

由于之前发生的事情,我只是猜测可能有 Telerik 参与。

在 IE 中,我使用了启用脚本调试的开发人员工具 (F12),但没有发现任何直接问题。我确实看到了:

DOM7011: The code on this page disabled back and forward caching. For more information, see: http://go.microsoft.com/fwlink/?LinkID=291337
File: mysite.com
HTML1300: Navigation occurred.
File: mysite.com
DOM7011: The code on this page disabled back and forward caching. For more information, see: http://go.microsoft.com/fwlink/?LinkID=291337
File: mysite.comm

这些都是警告而不是错误,我似乎无法在脚本调试器中显示任何问题。

我被难住了。我很感激这方面的任何帮助。 web.config 的 Handlers 和 HttpHandlers 部分在我的本地开发人员和 IIS 服务器之间匹配,所以我不知道我是否需要在那里做任何事情。以下是部分:

    <httpHandlers>
      <add path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" validate="false" />
      <add path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false" />
      <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false" />
      <add type="Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms, Version=5.1.11.713, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" path="Telerik.ReportViewer.axd" verb="*" validate="true" />
    </httpHandlers>
    <httpModules>
      <add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule" />
      <add name="RadCompression" type="Telerik.Web.UI.RadCompression" />
    </httpModules>
    <trace writeToDiagnosticsTrace="false" enabled="false" pageOutput="false" localOnly="true" requestLimit="400" />
    <httpCookies httpOnlyCookies="true" requireSSL="false" />
    <authorization>
      <deny users="?" />
      <allow users="*" />
    </authorization>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="RadUploadModule" />
      <remove name="RadCompression" />
      <add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule" preCondition="integratedMode" />
      <add name="RadCompression" type="Telerik.Web.UI.RadCompression" preCondition="integratedMode" />
      <add name="Glimpse" type="Glimpse.Core.Module,Glimpse.Core" preCondition="integratedMode" />
    </modules>
    <handlers>
      <remove name="ChartImage_axd" />
      <remove name="Telerik_Web_UI_SpellCheckHandler_axd" />
      <remove name="Telerik_Web_UI_DialogHandler_aspx" />
      <remove name="Telerik_RadUploadProgressHandler_ashx" />
      <remove name="Telerik_Web_UI_WebResource_axd" />
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="ChartImage_axd" path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" preCondition="integratedMode" />
      <add name="Telerik_Web_UI_SpellCheckHandler_axd" path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" preCondition="integratedMode" />
      <add name="Telerik_Web_UI_DialogHandler_aspx" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" preCondition="integratedMode" />
      <add name="Telerik_RadUploadProgressHandler_ashx" path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" preCondition="integratedMode" />
      <add name="Telerik_Web_UI_WebResource_axd" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" preCondition="integratedMode" />
      <add name="Telerik.ReportViewer.axd_*" type="Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms, Version=5.1.11.713, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" path="Telerik.ReportViewer.axd" verb="*" preCondition="integratedMode" />
      <add name="Glimpse" path="glimpse.axd" verb="GET,POST" type="Glimpse.Core.Handler,Glimpse.Core" preCondition="integratedMode" />
    </handlers>

如果您认为我可以提供任何其他信息,请告诉我。谢谢。

【问题讨论】:

  • 您的 IIS 版本是多少?和 RadControls 的版本?是否有可以查看的公共 URL?也许尝试在一个简单的页面中隔离问题并提供对它的访问。
  • 没有公共 URL。 IIS 在 Windows 2012 服务器上是 7.5,但在早期版本的 IIS 7.0 中已经出现此问题。 Telerik 是 2014.2.724.45

标签: .net events asp-classic scripting telerik


【解决方案1】:

我解决了这个问题。我修改了 web.config 并进行了其他更改。本质上,在&lt;compilation&gt; 部分下有一个&lt;assemblies&gt; 部分。我完全删除了&lt;assemblies&gt;

这解决了问题。

【讨论】:

    猜你喜欢
    • 2012-09-12
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 2013-01-17
    • 2012-03-14
    • 2011-12-02
    相关资源
    最近更新 更多