Можно ли установить ClientID
любого серверного элемента управления asp.net? Как я могу это сделать?
Установите ClientID в asp.net
Ответы (7)
Хорошей новостью является то, что в VS 2010 .Net 4 у вас будет полный контроль над идентификаторами клиентов!
Тем не менее, для текущих версий .Net вы можете сделать это. Я предполагаю, что вам нужен идентификатор для JavaScript. Если это так, просто получите идентификатор вот так:
<script type="text/javascript">
var myTextBox = $('#<%=TextBox1.ClientID%>');
</script>
Я бы посоветовал не делать этого, если вы не уверены, что хотите это сделать, но способ есть. Вы можете переопределить свойство ClientID
из серверного элемента управления.
public override string ClientID
{
get { return "whatever"; }
}
Но, как отмечали другие, извне этого сделать нельзя.
Это невозможно. ClientID создается ASP.NET. Из MSDN:
Значение ClientID создается путем объединения значения ID элемента управления и значения UniqueID его родительского элемента управления. Если значение ID элемента управления не указано, используется автоматически сгенерированное значение.
Даже я думаю, что в Visual Studio 2008 это невозможно. Поскольку свойство Control.ClientID имеет только получить метод
Изменить: но в Visual Studio 2010 (.Net 4.0) это возможно
Для этого ASP.NET 4 имеет свойство ClientIDMode для каждого элемента управления. Если вы хотите полностью отключить ClientID, вы можете использовать этот трюк - он работает для любой контроль без обратной передачи
Это функция ASP.NET 4.0.
Для VS 2010, .NET 4.0:
Если вы просто попытаетесь установить ctrl.ClientID="stringID"
, вы получите сообщение об ошибке, в котором говорится, что ClientID доступен только для чтения. Вы можете контролировать значение ClientID с помощью ClientIDMode - который определяет алгоритм, с помощью которого устанавливается ClientID:
ctrl.ID = "IDstring";
ctrl.ClientIDMode = ClientIDMode.Static; //ClientID value is set to the value of ID
Разметка html пометит html вашего элемента управления идентификатором элемента управления. Таким образом, у вас есть некоторая степень контроля со стороны кода программной части.