将参数传递给用户控制

问题描述:

我们正试图在这里基本上定位我们的用户控件,我们希望能够做这样的事情:将参数传递给用户控制

<in:Banner runat="server" ID="banners" Lang="fr" /> 

我们做到这一点的方式是通过页面级,并将其发送到师傅认为然后将其发送到控制:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Master.Lang = "FR"; 
} 

然后在MasterPage.master我们做这样的事:

<in:Banner runat="server" ID="banners" Lang="<%= Lang %>" /> 

该主页有一个名为Lang的公共知识。

在控制我们设置包含默认语言和设置的语言proprety(郎)的字段。看来,无论我们做什么,当前的语言不会从页面发送到用户控件...任何帮助?

+0

当页面呈现,请问在:横幅控制渲染lang属性?它仍然看起来像郎=“”? – NickGPS 2009-11-11 16:02:06

+0

如果横幅控件位于母版页中,请与Freddys关于ui文化的想法一起使用。页面生命周期是你的敌人,加载事件发生在错误的时间来设置你的旗帜。 – 2009-11-11 16:11:51

不完全是这样,但你可以考虑像在母版页控件的内容页,所以它可能是页面的页面加载的是,用户控件的页面加载之前执行。

不管上面的,为什么不设置UI文化的asp.net线程(可能是从在Global.asax),并使用从控制。

另一种选择是让您持有当前语言一个单独的类,并公开改变事件......这样你可以确保使用正确的语言,即使负载不同的做法---或有稍后是更改语言事件。

+0

不太确定在母版页中作为控件的页面。它更像是一个继承,这就是你指定主类型的原因。我同意ui文化的建议。 – 2009-11-11 16:07:16

+0

听起来像一个想法,我将不得不寻找一个通过从页面郎朗听起来更容易。 – Erick 2009-11-11 16:09:38

+1

你可以为单个控件指定UICulture吗?了解它是否可以在应用程序级别以外的各个级别上应用将会很有趣。 – NickGPS 2009-11-11 16:10:58

您可以访问它的母版页的代码隐藏这样

public void SetLanguage(string language) 
{ 
    banners.Lang = language; //banners is an ID reference to your user control. 
} 

或者在你的标记,我认为你可以做这样的

<in:Banner runat="server" ID="banners" Lang='<%# Bind("Lang") %>' /> 

我要指出,绑定工作在.Net 2.0及以上。