Я пытаюсь сделать что-то, что кажется довольно простым.У меня есть пользовательский элемент управления с несколькими LinkButtons
.Каждый 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"
.
Inкод у меня такой:
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
.Я попытался установить EnableViewState="true"
на LinkButtons
.Ничто из того, что я пробовал до сих пор, не сработало.
Тем не менее, это прекрасно работает на моей машине для разработки (Windows 7).
В этот момент я совершенно уверен, что, возможно, существует некоторое различие в конфигурациимежду двумя средами, которые вызывают это, но я действительно не уверен, где начать искать.Идеи?
Edit - 2011-10-26:
ОК - Я обнаружил, что у меня есть эта проблема и в других местах.Сайт с вышеуказанным кодом и другой сайт, на котором у меня возникла проблема, являются решениями Sitecore, использующими один и тот же экземпляр Sitecore.
На другом сайте есть текстовое поле для адреса электронной почты и связанного с ним ImageButton.с событием OnClick.Это все в элементе управления, который включен на каждой странице сайта.На домашней странице обработчик OnClick никогда не срабатывает.На любой другой странице запускается обработчик OnClick.
Код в оригинальной части моего поста выше также находится на главной странице сайта.Если я переместу его на любую другую страницу, он будет работать как положено.
Кроме того, как и код в оригинальной части моего поста, он отлично работает на моей машине для разработки (Windows 7), но не на рабочих машинах(Windows 2008 Server).Таким образом, может показаться, что это как-то связано с тем, что вы находитесь на домашней странице, и, возможно, Sitecore как-то вовлечен в проблему.Я все еще чешу голову, хотя ...