4

我需要更改 Sitecore 登录页面 (www.example.com/sitecore/login) 上的默认消息。看起来该消息来自Sitecore.sitecore.login.Login_LoginError. Sitecore.Client.dll但是,该方法是私有的,这意味着我被卡住了:

  • 我无法覆盖该方法,因为它是私有的。
  • 我无法从LoginError事件中取消订阅处理程序,因为处理程序是私有的。
  • 我无法将自己的处理程序添加到事件中以更改文本,因为我无法保证调用处理程序的顺序。

在我看来,我有两个选择,都不好:

  • 从头开始编写我自己的登录页面类,尽可能使用现有代码,但要暴露我需要的成员。
  • 使用反射来查找私有处理程序,以便我可以从事件中取消订阅它。

我也不想做。有没有更好的办法?

4

1 回答 1

1

在 Sitecore 中覆盖此类行为的需求很常见。反射器是您最好的朋友。在登录页面的代码隐藏中找到类并进行查找。在大多数情况下,您不必实际尝试通过剪切和粘贴大量代码来重新创建它。您可以只创建一个继承登录类的相同类型的新类,然后只需覆盖发生操作的一个方法。完成后,更改 .aspx 文件以引用您的新类,该类将构建到您自己的程序集中,而不是 Sitecore .dll。

但是,有时如果您只是想更改一些装饰性的东西,例如错误消息(这并不真正需要任何后端逻辑),那么页面上隐藏默认值的一次性 javascript 可能会更好地为您服务当它出现并显示您自己的自定义样式的 div 和消息时出现错误消息。做任何活动部件最少的事情。

于 2013-09-14T05:10:49.857 回答