2014-12-09 2 views
1

Я использую набор UserControls в приложении ASP.NET, которое я поддерживаю.Настройки и постоянные значения Cross UserControl

У меня есть страница, которая предоставляет набор пользовательских UserControls. На одном из этих элементов управления, скажем, ucA, у меня может быть небольшое всплывающее окно Javascript, которое отображает другой UserControl и назовем его ucB. На ucA я определил общественную собственность, которая устанавливает или получает значения из определенных в скрытые ucA:

<asp:HiddenField ID="hidWorkDirName" runat="server" /> 

и определение свойства:

public string _hidWorkDirName 
{ 
    get { return hidWorkDirName.Value; } 
    set { hidWorkDirName.Value = value; } 
} 

Мои ucB показывает только Textbox, который при представить, следует установить значение hidWorkDirName:

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    ucA parent = (ucA)this.Parent; //this, being ucB 
    parent._hidWorkDirName = txtName.Text; //the TextBox value being set on ucA 
} 

Хотя debugg Я вижу, что значение установлено правильно.

В настоящее время ucA также имеет кнопку отправки (оба отправления предназначены для разных вещей), на которых я хочу прочитать значение hidWorkDirName. Но независимо от того, что я пытаюсь получить, я получаю всегда пустую строку, как будто ничего не было установлено.

Я пробовал читать значение непосредственно из hiddenField и из самого свойства (_hidWorkDirName), но я никогда не получаю значение, которое я использовал ранее.

Почему это происходит?

ответ

1

Это связано с тем, что HiddenfieldhidWorkDirName может быть сброшен во время Page_Load. Попробуйте использовать другой подход, используя ViewState.

Вот ваша собственность с ViewState

public string _hidWorkDirName 
{ 
    get 
    { 
     if (ViewState["WorkDirName"] != null) 
     { 
      return (string)ViewState["WorkDirName"]; 
     } 
     return string.Empty; 
    } 
    set 
    { 
     ViewState["WorkDirName"] = value; 
    } 
} 
+0

Это действительно был ответ. Спасибо! Напомните мне купить вам пиво в эти дни ..;) –

+1

Ха-ха, удовольствие! Голосование было бы хорошо на данный момент;) – Sam

+0

Забыл, извините;) –

Смежные вопросы