What am I missing?
Проблема в том, что вы используете прямую запись на веб-странице, используя <%= %>
внутри UpdatePanel.
Когда вы используете UpdatePanel, обновление должно быть выполнено для всего кода позади, иначе произойдет сбой, и причина этого в том, что при обратной передаче он может запустить только код позади и может выполнить обновление рендеринга только таким способом.
Чтобы заставить его работать, удалите логику <%= %>
в части aspx страницы и замените их литералами, которые вы отображаете в коде позади.
Например.
Заменить всю эту часть на
<%
if (_ApplicationAccess("Diabetes")) {
%>
<li runat ="server" id="Diabetes">
<a id="current" href='<%= ResolveUrl("~/Home/Home.aspx") %>'
title="Diabetes"><span>Diabetes</span></a></li>
<%
}
%>
с
<asp:literal run="server" id="txtDiabetes" />
и в коде позади.
if (_ApplicationAccess("Diabetes")) {
// render here the output
txtDiabetes.Text = string.format("<li id=\"Diavetes\" ..... >", ResolveUrl("~/Home/Home.aspx"));
}