Этот вопрос продолжается с двух предыдущих вопросов, которые я написал:
1) Как получить переменные из .ascx в другом .ascx?
2) C # asp.net textbox.text не задается?
Мой третий вопрос в связи с этим - когда я создаю сеанс и анализирую информацию из ParentControl в ChildControl, а затем пытаюсь проанализировать другую информацию в другойэкземпляр ChildControl копирует значения из второго дочернего элемента управления в первый дочерний элемент управления.
Обновление: отображение страницы .ascx, которую я пропустил, может быть уместным.
ParentControl.ascx
<asp:PlaceHolder runat="server" id="ShowHideControls" Visible="false">
<asp:PlaceHolder runat="server" id="instanceOne" Visible="false">
<uc1:ChildControl ID="controlOne" runat="server" />
</asp:PlaceHolder>
<asp:PlaceHolder runat="server" id="instanceTwo" Visible="false">
<uc1:ChildControl ID="controlTwo" runat="server" />
</asp:PlaceHolder>
</asp:PlaceHolder>
ParentControl.ascx.cs
public void CreateSessionsAddressString(User user)
{
if (user == user)
Session["user"] = user;
}
instanceOne ChildControl.ascx.cs
public void SetUserDetails()
{
User user = Session["user"] as User;
string fullAddress = User.fullAddress;
}
Теперь, если у меня есть второй экземпляртот же пользовательский элемент управления используется следующий код.
instanceTwo ChildControl.ascx
public void SetUserDetails()
{
User user = Session["user"] as User;
string fullAddress = user.fullAddress;
}
В instanceTwo, когда вызывается метод set для обновления информации, instanceOne, кажется, заполняетсяСам с данными из экземпляра два.как я могу предотвратить это?
Обновление: добавлена дополнительная информация, чтобы помочь решить проблему ниже.
Итак, в нашем решении есть пользователь, у которого естьучетная запись, каждая учетная запись может иметь одного дополнительного пользователя.Я выполняю проверку, чтобы убедиться, что user1 и user2 не равны null.
Если user1 равен true, а user2 равен null, то у меня нет проблемы.Когда user1 & user2 имеют значение true, у меня возникает проблема с получением информации, потому что, когда я вызываю метод для получения информации о пользователе, кажется, что она перезаписывает информацию user1 в пользовательском элементе управления.
Мне нужно, поскольку некоторые пользователи предложили обернуть код так, чтобы он влиял только на себя, а не на другие элементы управления на той же странице.Я собираюсь рассмотреть некоторые из предложений сегодня и попытаться вернуться к вашим комментариям как можно скорее.
Обновление Я сослался на более ранний вопрос, который я задал
1) Как получить переменные из .ascx в другом .ascx?
Полагаю, поздний вечер пятницы - не самое лучшее время, я в основном создал публичный метод в дочернем контролеи в родительском контроле я могу вызывать открытый метод для каждого экземпляра, чтобы я мог просто набрать:
instanceOne.MyMethod();
instanceTwo.MyMethod();
Это, кажется, хорошая работа, и помогает мне избегать использования сессий.Я собираюсь попросить удалить вопрос, потому что мое решение уже было в вопросе ранее.