У меня странное поведение с потерей состояния просмотра при обратной передаче для приложения .net с использованием Sitecore. Я предполагаю, что это может быть какая-то переменная конфигурации, но я новичок в Sitecore и действительно не знаю, с чего начать.
ОБНОВЛЕНИЕ: Sitecore получил ответ. Недавно мы добавили модуль dtSearch, и для параметра AutomaticDataBind было установлено значение true в файле dtSearch.config, который переопределяет настройку в веб-конфигурации. Теперь мы удалили его, и он снова работает нормально.
Я сделал небольшой тест, если это может помочь. Это два пользовательских элемента управления на одной странице, оба с повторителем. При обновлении состояния просмотра теряется, поэтому даже если я снова привяжу обновленный ретранслятор, данные для другого будут потеряны.
Usercontrol 1:
<asp:Repeater runat="server" ID="Repeater1" OnItemDataBound="Repeater1_ItemBind">
<ItemTemplate>
<li>
<asp:Literal runat="server" ID="Literal1"></asp:Literal>
</li>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<string> myTestList1 = new List<string>();
myTestList1.Add("a");
myTestList1.Add("b");
Repeater1.DataSource = myTestList1;
Repeater1.DataBind();
}
}
protected void Repeater1_ItemBind(object sender, RepeaterItemEventArgs e)
{
Literal Literal1 = (Literal)e.Item.FindControl("Literal1");
Literal1.Text = (string)e.Item.DataItem;
}
Usercontrol 2:
<asp:Repeater runat="server" ID="Repeater2" OnItemDataBound="Repeater2_ItemBind" OnItemCommand="Repeater2_Command">
<ItemTemplate>
<li>
<asp:Literal runat="server" ID="Literal2"></asp:Literal>
<asp:LinkButton ID="Update" CommandName="Update" runat="server">
update
</asp:LinkButton>
</li>
</ItemTemplate>
</asp:Repeater>
private string test = String.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
test = "a";
Repeater2.DataSource = test;
Repeater2.DataBind();
}
}
protected void Repeater2_ItemBind(object sender, RepeaterItemEventArgs e)
{
char c = (char)e.Item.DataItem;
Literal Literal2 = (Literal)e.Item.FindControl("Literal2");
Literal2.Text = c.ToString();
}
protected void Repeater2_Command(object sender, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Update")
{
test = "b";
Repeater2.DataSource = test;
Repeater2.DataBind();
}
}
Есть ли у кого-нибудь идеи, что может происходить? Сообщите мне, если мне понадобится дополнительная информация. Больше всего раздражает то, что он работал на прошлой неделе, но я понятия не имею, что изменилось!
Спасибо,
Аннели