将参数传递给用户控制
问题描述:
我们正试图在这里基本上定位我们的用户控件,我们希望能够做这样的事情:将参数传递给用户控制
<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(郎)的字段。看来,无论我们做什么,当前的语言不会从页面发送到用户控件...任何帮助?
答
不完全是这样,但你可以考虑像在母版页控件的内容页,所以它可能是页面的页面加载的是,用户控件的页面加载之前执行。
不管上面的,为什么不设置UI文化的asp.net线程(可能是从在Global.asax),并使用从控制。
另一种选择是让您持有当前语言一个单独的类,并公开改变事件......这样你可以确保使用正确的语言,即使负载不同的做法---或有稍后是更改语言事件。
答
您可以访问它的母版页的代码隐藏这样
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及以上。
当页面呈现,请问在:横幅控制渲染lang属性?它仍然看起来像郎=“”? – NickGPS 2009-11-11 16:02:06
如果横幅控件位于母版页中,请与Freddys关于ui文化的想法一起使用。页面生命周期是你的敌人,加载事件发生在错误的时间来设置你的旗帜。 – 2009-11-11 16:11:51