Как Дарин Димитров сказал в своем ответе:
<%= txtTest.ClientID %>
должно работать, но не в отдельном JavaScript
файл, в котором сценарии на стороне сервера не выполняются .
Решения, которые я мог бы найти для них:
<input runat="server" id="txtTest" value="test" class="txtTest" />
- Используйте
class
вместо ID
Используя класс, вы можете получить значение в любом месте. Это одно из лучших решений (как правило, лучшее)
var value = $('.txtTest').val();
- Используйте
ClientID
код в aspx
Вы всегда можете позвонить ClientID
в aspx, но если вы работаете с какой-то структурой, это не лучшее решение. Мне нравится использовать этот метод, когда я что-то тестирую.
var value = $('#<%=txtTest.ClientID%>').val();
Вы также можете использовать ClientID
во внешнем js-файле с обходным решением. ЭТО НЕ ХОРОШО , используйте, только если вам это действительно нужно. Я обычно делаю это, когда использую Telerik
.
В aspx:
var id = <%=txtTest.ClientID%>;
В файле js:
var value = $('#'+id).val();
так что HTML становится
<input runat="server" id="txtTest" value="test" ClientIDMode="Static" />
и js может назвать его так, как он назван
var value = $('#txtTest').val();
Проблема с этим решением заключается в том, что вам нужно быть очень осторожным, чтобы избежать двуличия на ids
вашей страницы. Старайтесь никогда не использовать режим Static
в контроллере.
Как говорится в MSDN:
Значение ClientID установлено равным значению свойства ID. Если
Элемент управления является контейнером именования, элемент управления используется как верх
иерархия именования контейнеров для любых элементов управления, которые она содержит.
Ссылка shaans's answer - отличное место для проверки дополнительной информации о ClientIDMode.
Очистка HTML-разметки с помощью ASP.NET 4 Web Forms - идентификаторы клиентов (VS 2010 и .NET 4.0 Series)