Предлагаемое решение:
<HTML lang="<%= PageLanguage %>">
отлично работает. Есть еще одна альтернатива, на которую стоит Aleris, но не совсем правильно. Если вы добавите атрибут runat = "server" в тег HTML, он будет проанализирован на стороне сервера HtmlGenericControl и будет доступен в коллекции Controls. Кроме того, если вы добавите атрибут id, в коде будет переменная для прямого доступа к нему, таким образом:
<html runat="server" id="html">
в коде:
html.Attributes["lang"] = "en";
Примечание: это верно для любого тега HTML на вашей странице.
Редактировать : теперь я вижу, что Алерис все понял правильно - он ссылается на «текст» (фактически, LiteralControl) в коллекции Controls, который содержит тег html (наряду с типом документа и всем остальным до первого тега сервера). Конечно, вы можете манипулировать этим текстом, и это будет (по его словам) взломом - но это ограничит изменения только кодом-кодом.