我想本地化我的aspx页面。
这应包括在InstantiateIN
内的GridView中动态创建的LinkButtons(修订1:实现System.Web.UI.ITemplate.InstantiateIN方法来操纵GridView的外观)
(修订2:添加前六行代码以更好地指示其他代码的位置)
但是在InstantiateIN中我不能使用(请参阅)方法GetLocalResourceObject
解决方案:使用会话变量
问题:为什么我不能在InstantiateIN中使用GetLocalResourceObject?
InstantiateIN
中发生以下情况public class DynamicTemplateGridViewSearch : ITemplate
{
public void InstantiateIn(System.Web.UI.Control Container)
{
switch (ItemType)
{
case ListItemType.Item:
switch (InfoType)
{
case "Command":
{
LinkButton search_button = new LinkButton();
search_button.ID = "search";
search_button.CommandName = "Edit";
//following line does not work. Error is:
//The name 'GetLocalResourceObject' does not exist in the current context
search_button.Text = GetLocalResourceObject("SearchButtonResource1.Text").ToString();
//so I have to create a Session-String in Page_Load
//which is referenced here
search_button.Text = (string)new Page().Session["SearchText"]; // "Search";
search_button.Click += new EventHandler(search_button_Click);
Container.Controls.Add(search_button);
答案 0 :(得分:0)
您还没有告诉确切InstantiateIn
方法的位置 - 是否在自定义控件中?
无论如何,您可以使用container.Page属性来获取对页面对象的引用并在其上调用方法。例如,
search_button.Text = Container.Page.GetLocalResourceObject("SearchButtonResource1.Text").ToString();
BTW,可以类似地获得会话对象引用,也可以使用当前的HttpContext。例如,Container.Page.Session["SearchText"]
或HttpContext.Current.Session["SearchText"]