【问题标题】:Sitecore - WebMethod is not being calledSitecore - 未调用 WebMethod
【发布时间】:2014-10-17 11:00:04
【问题描述】:

我已经看到很多解决方案来检查用户是否在 C# 的服务器端禁用了 JavaScript(我的意思是真的禁用了,而不是如果浏览器不支持 JavaScript,因为我已经尝试过 EcmaScriptVersion)。

这是我找到的两篇文章:

我目前正在尝试 Nuno Freitas 的第一种方法,因为它似乎是最干净的,无需使用查询字符串参数,但从未设置会话变量,也从未调用 SetJavascriptEnabled。

我已经像这样将 ScriptManager 添加到我的 aspx 页面中

<asp:ScriptManager ID="scriptManager" runat="server" EnablePageMethods="true"/>

并且启动脚本被注册为文章中(在 OnPreRender 事件中),但它没有显示在页面中。顺便说一句,这是一个使用 sitecore 的网站。

有什么帮助吗?

【问题讨论】:

  • 我们无法为您写下解决方案。努力,给我们看一些代码,解释为什么它不起作用......
  • 您的问题不在于检测 Javascript。它正在调用网络方法。你应该问一个问题,为什么你的第一个解决方案不起作用。
  • 你看到页面上嵌入的JS了吗?查看源代码并检查 PageMethods.SetJavascriptEnabled 或类似名称 - 如果页面上没有,则不会调用它。还要检查您的浏览器控制台是否存在调用方法的错误。
  • 是的,我检查了 PageMethods.SetJavascriptEnabled 不在页面中:\
  • 那么听起来你没有正确连接它的那部分......在你的代码隐藏中你需要添加对ClientScript.RegisterStartupScript的调用 - 确保它在代码中并且正在打。根据文章,这不需要在预渲染事件中,它可以在其他地方。

标签: javascript c# asp.net sitecore webmethod


【解决方案1】:

基本上这些文章检查的是,如果即使在编写了 ajax ($.ajax) 代码之后也没有从客户端到服务器端发生 ajax 调用,那么 javascript 将被禁用。这是一种间接的检查方式。

【讨论】:

  • 那么更直接的方法是什么?
  • @HélderGonçalves 真的没有 :( 这些是你最好的选择,但它们是间接的,并且受到延迟的影响(直到第一页加载后你才会真正知道,并且JS 已经运行)并且用户可以在调用之前离开,或者它可能无法完成 - 没有一个是理想的。
猜你喜欢
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2015-11-26
  • 2021-01-31
相关资源
最近更新 更多