Подтвердить что ты не робот

Как получить идентификатор клиента asp.net в файле внешнего javascript

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

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

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

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

4b9b3361

Ответ 1

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

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

определите свои переменные перед вызовом 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>

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

Ответ 2

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

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

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

$(function() {
    var fooButton = $('.foo');
});

Ответ 3

в script файле (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>

Ответ 4

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

$("[id$='buttonXXX'])