c# - 如何更改 Sitecore 登录页面上的消息?

标签 c# asp.net asp.net-membership sitecore

我需要更改 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/

相关文章:

c# - 检查索引运算符是否存在

c# - 更新面板中的 Ajax GridView 选择不起作用

.net - 如何控制 MembershipProvider 实例的创建/生命周期?

c# - 如果数据库表更新/插入,如何让 Windows C# 控件自动更新?

c# - 在 sql 命令中将字符串作为日期时间参数传递

c# - gridview 中的文本框不会自动回发

asp.net - 在 Web Api 聊天应用程序后端服务器中使用或不使用数据传输对象 (DTO)

c# - 共享资源锁

visual-studio-2010 - SQL Server 角色提供程序单元测试期间出现 "The role manager feature has not been enabled"错误

asp.net-membership - ASP.NET 成员资格提供程序的不同哈希算法?