В таком случае я бы, вероятно, использовал:
<input type="button" ID="btnTest" runat="server" onclick="doTest()" value="change" />
Обратите внимание на runat = "сервер" .
Хотя asp: button, вероятно, отрисовывается аналогично, если вы действительно хотите ввести HTML-кнопку, вы можете использовать это. Да, ASP.NET подберет значение на стороне сервера.
Кроме того, выполните просмотр источника и убедитесь, что на панели ASP.NET не отображается идентификатор входа. В общем, вы тестировали это без тега asp: panel? Интересно, влияет ли это на что-нибудь?