我需要更改 Sitecore 登录页面 (www.example.com/sitecore/login) 上的默认消息。看起来该消息来自 Sitecore.Client.dll
中的 Sitecore.sitecore.login.Login_LoginError
方法。但是,该方法是私有(private)的,这意味着我被卡住了:
- 我无法覆盖该方法,因为它是私有(private)的。
- 我无法取消订阅
LoginError
事件的处理程序,因为该处理程序是私有(private)的。 - 我无法将自己的处理程序添加到事件中以更改文本,因为我无法保证调用处理程序的顺序。
在我看来,我有两个选择,都不好:
- 从头开始编写我自己的登录页面类,尽可能使用现有代码,但要公开我需要的成员。
- 使用反射找到私有(private)处理程序,以便我可以取消订阅该事件。
我也不想做。有没有更好的办法?
最佳答案
在 Sitecore 中覆盖这种行为的需求很常见。 Reflector 是您最好的 friend 。在登录页面的代码隐藏中找到该类并进行查找。在大多数情况下,您不必实际尝试通过剪切和粘贴大量代码来重新创建它。您可以只创建一个继承登录类的相同类型的新类,然后只覆盖发生操作的方法。完成后,更改 .aspx 文件以引用您的新类,它将构建到您自己的程序集中而不是 Sitecore .dll。
但是,有时如果您只想更改错误消息之类的装饰性内容(实际上并不需要任何后端逻辑),您可能会在页面上使用一次性 javascript 来更好地服务于当它出现时隐藏默认错误消息并显示您自己的自定义样式的 div 和消息。做任何事件部件最少的事情。
关于c# - 如何更改 Sitecore 登录页面上的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18778945/