Как получить идентификатор клиента asp.net во внешнем файле javascript - PullRequest
13 голосов
/ 02 октября 2010

Когда я использую встроенные javascript функции , я могу получить идентификатор клиента элементов с этим кодом:

document.getElementById('<%=buttonXXX.ClientID%>' )

Но теперь я использую внешний файл javascript для кэширования и ускорения рендеринга. и этот код больше не работает для получения идентификатора клиента элементов, он выдает ошибку.

Как я могу получить идентификаторы клиента элементов в внешний файл javascript , используя asp.net 2.0, netframework 3.5, c #, iis 7.5

Ответы [ 5 ]

30 голосов
/ 03 октября 2010

Я могу предложить 2 способа.

Первый способ

определить ваши переменные перед вызовом javascript, внутри файла .aspx , который можно скомпилировать.

var ButtonXXXID = <%=buttonXXX.ClientID%>
// and now include your javascript and use the variable ButtonXXXID

Второй способ

во внешнем файле javascript, напишите свой код как:

function oNameCls(ControlId1) {

    this.ControlId1 = ControlId1;

    this.DoYourWork1 = function() {
        // use the control id.
        // this.ControlId1
    }   
}

И назовите свои действия как.

<script>
    // init - create
    var <%=this.ClientID%>MyCls = new oNameCls('<%=Control1.ClientID%>');
    // do your work
    <%=this.ClientID%>MyCls.DoYourWork1();
</script>

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

4 голосов
/ 02 октября 2010

Вы можете использовать селектор класса. jquery может значительно упростить вашу жизнь здесь. Таким образом, вы можете применить специальный класс к элементу управления:

<asp:LinkButton ID="foo" CssClass="foo" runat="server" Text="foo" />

и во внешнем файле JavaScript, когда DOM будет готов, вы можете ссылаться на кнопку с помощью селектора классов:

$(function() {
    var fooButton = $('.foo');
});
1 голос
/ 21 сентября 2014

Я использую следующий код в моем .js файле, когда у меня нет другого лучшего выбора.

$("[id$='buttonXXX'])
1 голос
/ 30 сентября 2012

в файле сценария (test.js)

function test(ControlID1) {
  var controlId = document.getElementById(ControlID1);
  controlId.onchange = function () {        
    alert(controlId.value);
    }
  }

в .aspx файле

<script type="text/javascript">
   var callTest = test('<%=txtSelected.ClientID%>');
   window.onload = callTest;
</script>
0 голосов
/ 01 февраля 2017

Я знаю старый вопрос, но с jquery вы можете использовать этот подход:

Aspx file

<asp:Button ID="btnCalculate" ClientID="btnCalculate" runat="server" />

внешний файл js

$("[ClientID='btnCalculate']").

https://lanitdev.wordpress.com/2009/06/08/extending-jquery-to-select-asp-controls/

...