【发布时间】:2010-10-27 16:13:15
【问题描述】:
我遇到了一些奇怪的行为,即使用 Sitecore 的 .net 应用程序在回发时丢失了视图状态。我假设它可能是某个地方的一些配置变量,但我是 Sitecore 的新手,真的不知道从哪里开始寻找。
更新: Sitecore 现已回复我们并提供了答复。我们最近添加了 dtSearch 模块,并且 AutomaticDataBind 在 dtSearch.config 中设置为 true,它会覆盖 Web 配置中的设置。我们现在已将其删除,它再次正常工作。
如果有帮助,我已经做了一个小测试。它是一页上的两个用户控件,都带有一个中继器。更新视图状态时会丢失,因此即使我再次绑定更新的转发器,另一个的数据也会丢失。
用户控件 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;
}
用户控件 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();
}
}
有人知道会发生什么吗?如果我需要提供更多信息,请告诉我。最烦的是上周还在工作,但我不知道发生了什么变化!
谢谢,
安妮
【问题讨论】:
标签: asp.net viewstate sitecore