2013-12-20 3 views
1

Мой код в ASPX странице:Переменная яваскрипта функции в ASPX странице, доступной в C# код в той же яваскрипта функции

<script type="text/javascript">  
    function MenuItem_Click(itemId) { 
     <%     
      MyAspLogger("Clicked on item: {0}", itemId); 
     %> 
    } 
</script> 

Я не знаю, как получить доступ к «Itemid». Я знаю, что с другой стороны - доступ к переменной C# в aspx-коде возможен. Но я не знаю, возможен ли доступ к переменной javascript в коде C#, включая ту же функцию javascript.

Благодарим за помощь.

ответ

1

не доступ к значению переменной javascript в боковом коде сервера, пока вы не выполните обратную передачу и не отправите вызов asnc с помощью ajax. Asp.net генерирует код html и javascript со стороны сервера и отправляет ответ клиенту, то есть браузеру.

Чтобы получить доступ к значению переменной javascript после обратной передачи, вы можете назначить его в поле hidden, которое сделало доступным сервер и доступ к нему на стороне сервера. Так asp.net поддерживает ViewState.

2

Я предполагаю, что вы пытаетесь получить нажатые кнопки меню, а затем запишите весь элемент меню?

1- Чтобы получить идентификатор меню,

Передавайте объект меню, используя ключевое слово «это» в функцию обработки клика (MenuItem_Click).

<a id='menu_1 onclick='return MenuItem_Click(this);'>Click Me!</a> 
<script type="text/javascript"> 
function MenuItem_Click(me) { 
    alert(me.id); // The Id of menu clicked. 
    // Do Whatever you want with the id now. 
    . 
    . 
    . 
} 
</script> 

2- Logging щелкнул меню ID

У вас есть 2 варианта на самом деле ... использовать вызов веб-сервиса каждый раз, когда меню щелкнул (который я не рекомендую)

ИЛИ

Используйте переменную для хранения идентификаторов меню щелчка или скрытую переменную.

<script type="text/javascript"> 
function MenuItem_Click(me) { 
    var hdnMenuLog = document.getElementById('hdnMenuLog'); 
    hdnMenuLog.value = hdnMenuLog.value + '|' + me.id; 
} 
</script> 

Надеюсь, это поможет!

0

Я попытался

<asp:Label CssClass="helperLabel" runat="server" Visible="False">Test</asp:Label> 

<script type="text/javascript"> 
function MenuItem_Click(item) { 
     // Setup 
     $(".helperLabel").html("asdf"); 
     <% 
      MyAspLogger("Clicked on item"); 
     %> 
</script> 

в коде позади меня

protected void MyAspLogger(string logMessage) 
{ 
     MyLogger.Debug(logMessage + "/" + helperLabelId.Text); 
} 

Это работает нормально, но 2 другой вопрос.

Текст не изменяется на стороне сервера, а только на стороне клиента (видно, что после удаления атрибута Visible из управления asp).

А также я обнаружил, что метод MyAspLogger вызывается при загрузке страницы не после события click.

Что мне нужно, это grabb itemId и зарегистрировать его через мой метод Logger из кода позади.

спасибо.

Смежные вопросы