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

时间:2013-02-15 14:26:39

标签: asp.net sitecore sitecore6

我有一些遗留的sitecore asp网络应用程序。 我发现在布局(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网页生活方式流程它不是很好的行为,但无论如何我需要用它做点什么。在我的案例中,最好的方法是什么以及如何以正确的方式完成?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果这是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,请参阅评论。