Установите ClientID в asp.net

Можно ли установить ClientID любого серверного элемента управления asp.net? Как я могу это сделать?


person ebattulga    schedule 15.09.2009    source источник
comment
Объясните, чего вы пытаетесь достичь, и тогда мы сможем предложить альтернативу.   -  person Dan Diplo    schedule 15.09.2009


Ответы (7)


Хорошей новостью является то, что в VS 2010 .Net 4 у вас будет полный контроль над идентификаторами клиентов!

Тем не менее, для текущих версий .Net вы можете сделать это. Я предполагаю, что вам нужен идентификатор для JavaScript. Если это так, просто получите идентификатор вот так:

<script type="text/javascript">
    var myTextBox = $('#<%=TextBox1.ClientID%>');
</script>
person Michael La Voie    schedule 15.09.2009
comment
+1 за то, что был джедаем и читал мысли Эбаттулги, получить ClientID, который я не устанавливал - person rick schott; 15.09.2009
comment
Не забудьте поставить знак # перед ‹% = pending, если вы хотите получить фактический объект DOM, а не только текст ClientID элемента управления. - person KSwift87; 19.09.2013
comment
Спасибо @ Kswift87, это абсолютно верно. я обновил свой ответ - person Michael La Voie; 19.09.2013

Я бы посоветовал не делать этого, если вы не уверены, что хотите это сделать, но способ есть. Вы можете переопределить свойство ClientID из серверного элемента управления.

public override string ClientID
{
    get { return "whatever"; }
}

Но, как отмечали другие, извне этого сделать нельзя.

person Chetan S    schedule 15.09.2009

Это невозможно. ClientID создается ASP.NET. Из MSDN:

Значение ClientID создается путем объединения значения ID элемента управления и значения UniqueID его родительского элемента управления. Если значение ID элемента управления не указано, используется автоматически сгенерированное значение.

person Ahmad Mageed    schedule 15.09.2009

Даже я думаю, что в Visual Studio 2008 это невозможно. Поскольку свойство Control.ClientID имеет только получить метод

Изменить: но в Visual Studio 2010 (.Net 4.0) это возможно

person anishMarokey    schedule 15.09.2009
comment
Как это возможно? В VS2015 этот метод пока только получить. - person FrenkyB; 01.02.2017

Для этого ASP.NET 4 имеет свойство ClientIDMode для каждого элемента управления. Если вы хотите полностью отключить ClientID, вы можете использовать этот трюк - он работает для любой контроль без обратной передачи

person Lisetsky Val    schedule 05.07.2011

Это функция ASP.NET 4.0.

person Ryan Hoffman    schedule 15.09.2009

Для 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 вашего элемента управления идентификатором элемента управления. Таким образом, у вас есть некоторая степень контроля со стороны кода программной части.

person Rafael Emshoff    schedule 25.07.2013