Невозможно использовать GetLocalResourceObject внутри InstantiateIn - PullRequest
0 голосов
/ 12 октября 2010

Я хотел бы локализовать мою aspx-страницу.

Это должно включать в себя динамически созданные LinkButtons в GridView внутри InstantiateIN

(поправка 1: реализация System.Web.UI.ITemplate.InstantiateIN метод для управления внешним видом GridView)

(поправка 2: добавлены первые шесть строк кода, чтобы лучше указать расположение другого кода)

Но внутри InstantiateIN я не могу использовать (см.) метод GetLocalResourceObject

Решение: используйте переменную сеанса

Вопрос : Почему я не могу использовать GetLocalResourceObject внутри InstantiateIN?

следующеепроисходит внутри InIntiateateIN

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);

1 Ответ

0 голосов
/ 12 октября 2010

Вы не сказали, где именно находится метод InstantiateIn - он внутри пользовательского элемента управления?

В любом случае, вы можете использовать свойство container.Page, чтобы получить ссылку на объект страницы и вызвать метод для него. Например,

search_button.Text = Container.Page.GetLocalResourceObject("SearchButtonResource1.Text").ToString();

Кстати, ссылка на объект сеанса может быть получена аналогичным образом или вы можете использовать текущий HttpContext. Например, Container.Page.Session["SearchText"] ИЛИ HttpContext.Current.Session["SearchText"]

...