ASP NET 如何将事件从 ASPX 发送到 ASCX

Posted

技术标签:

【中文标题】ASP NET 如何将事件从 ASPX 发送到 ASCX【英文标题】:ASP NET how to send event from ASPX to ASCX 【发布时间】:2013-01-31 13:15:13 【问题描述】:

我有一些旧的 sitecore asp net 应用程序。 而且我发现在布局(aspx)上我有应该改变网站语言的 ImageButton 控件。

    protected void btnLanguage_Click(object sender, EventArgs e)
    
        ImageButton flag = (ImageButton)sender;
        if (string.IsNullOrEmpty("") == false)
        
           UserContext.CurrentCulture = LanguageManager.GetLanguage(flag.CommandArgument);                     
        
        else
        
            SC.Context.Language = LanguageManager.GetLanguage(flag.CommandArgument);
        
    

但我有很多控件需要在调用此事件后进行翻译。通过 asp 网页生活方式过程,这不是好的行为,但无论如何我需要用它做点什么。在我的情况下,最好的方法是什么?应该如何以正确的方式完成?

【问题讨论】:

想到的最快方法是将语言保存在 Session 中并从各种控件访问它(当主页回发时,它们都应该获得页面加载事件,因此您可以检查那里)。 谢谢。是的,这是想法。但是正确的方法呢? 【参考方案1】:

Alistair Deneys 记录了如何使用事件来允许组件相互通信。这个机制值得了解,看看Alistair的帖子Decoupling Through the Sitecore Event Pool。

【讨论】:

【参考方案2】:

如果这是一个 Sitecore 应用程序,那么只需让 Sitecore 处理它,将您的图像按钮更改为带有超链接的常规图像并传入语言参数(使用 LinkManager):

/en-CA/some-folder/some-page.aspx

/some-folder/some-page.aspx?sc_lang=en-CA

然后可以根据Sitecore.Context.Lanaguge设置系统文化

一些有用的info in this post,也可以查看 cmets。

【讨论】:

以上是关于ASP NET 如何将事件从 ASPX 发送到 ASCX的主要内容,如果未能解决你的问题,请参考以下文章

如果会话过期,如何自动重定向? ASP.Net(从 SessionTimeout.aspx 到 Timeout.aspx)

深入了解asp.net框架。生命周期以及事件处理机制

如何将数据从 aspx 页面传递到 ascx 模式弹出窗口?

asp.net c#向html内传值问题,高手请来

将 Stripe 支付网关集成到 asp.net 网络表单中

使用 jQuery 将 $.post 发送到 .aspx