我想做一些看起来非常简单的事情。我有一个用户控件,其中包含几个 LinkButton
。每个 LinkButton
都设置了 OnCommand
、CommandName
和 CommandArgument
,如下所示:
<ul id="continents">
<li id="northamerica"><asp:LinkButton ID="lbNorthAmerica" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="North America" runat="server">North America</asp:LinkButton></li>
<li id="southamerica"><asp:LinkButton ID="lbSouthAmerica" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="South America" runat="server">South America</asp:LinkButton></li>
<li id="asia"><asp:LinkButton ID="lbAsia" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Asia" runat="server">Asia</asp:LinkButton></li>
<li id="australia"><asp:LinkButton ID="Australia" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Australia" runat="server">Australia</asp:LinkButton></li>
<li id="africa"><asp:LinkButton ID="lbAfrica" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Africa" runat="server">Africa</asp:LinkButton></li>
<li id="europe"><asp:LinkButton ID="lbEurope" OnCommand="ChooseRegion" CommandName="SetCookie" CommandArgument="Europe" runat="server">Europe</asp:LinkButton></li>
</ul>
就代码而言,用户控件具有 AutoEventWireup="true"
。
在代码后台,我有以下内容:
protected void ChooseRegion(object sender, CommandEventArgs e)
{
Response.Cookies["region"].Value = e.CommandArgument.ToString();
Response.Cookies["region"].Expires = DateTime.Now.AddDays(90);
SendToRegion(e.CommandArgument.ToString());
}
在我的生产环境(Windows Server 2008)中,当我点击链接按钮时,
ChooseRegion()
没有被调用,因此没有设置cookie。我不知道如何解决这个问题。我尝试手动在OnInit
中配置命令处理程序,并尝试使用OnClick
代替OnCommand
。我尝试在LinkButtons
上设置EnableViewState="true"
,但迄今为止尝试的所有方法都没有奏效。然而,在我的开发机器(Windows 7)上可以正常工作。
目前,我相当确信两个环境之间存在某些配置差异导致了这个问题,但我真的不知道从哪里开始寻找。有任何想法吗?
编辑 - 2011-10-26:
好的-我发现我也在其他地方遇到了这个问题。具有上述代码的网站和我遇到问题的另一个网站都是Sitecore解决方案,共享相同的Sitecore实例。
在另一个网站上,有一个文本框用于输入电子邮件地址,以及一个带有OnClick事件的相关ImageButton。这都在一个控件中,该控件包含在网站的每个页面中。在主页上,OnClick处理程序从来没有触发过。在其他任何页面上,OnClick处理程序都会触发。
我的帖子原始部分中的代码也在网站的主页上。如果将其移动到任何其他页面,则会按预期工作。
而且,就像我帖子原始部分中的代码一样,在我的开发机器(Windows 7)上正常工作,但在生产机器(Windows 2008 Server)上不行。因此,这似乎与在主页上有关,也许Sitecore在问题中扮演了一定的角色。尽管如此,我仍然感到困惑...