2016-08-11 4 views
0

Я пытаюсь работать с интерактивным DIV с некоторой вертикальной вкладкой. То, что я хочу, при нажатии на конкретный DIV вызвать статический метод, чтобы сделать некоторые задачи, так что я сделал это:Вызов статического метода из файла cshtml

<div class="tabbable tabs-left"> 
<ul class="nav nav-tabs"> 
    <li onclick="myEvent()"><a href="#b" data-toggle="tab">Tuttle</a></li> 

тогда, мой код JavaScript:

<script>  
     function clickEvet() {  
     alert("alert test message"); 
     @MyProject.myMethod()  
    } 
</script>  

Вызов функции «clickEvent ()" работает. Проблема в том, что @ MyProject.myMethod() вызывается независимо от того, иными словами, @ MyProject.myMethod() выполняется, как только страница загружается. Я хочу это только тогда, когда я нажимаю на свой div.

Это из файла cshtml, и я использую .NET 4.5


РЕШЕНИЕ:

я редактирую мой вопрос, чтобы отправить ответ для будущих ссылок ...: Спасибо к другим комментариям я наконец понял, как работать с Ajax и заставить его работать. Вот решение:

<script>  
      function vaxGUID() {   
     $.ajax({ 
      type: 'POST', 
      url: "/VAXBean/bmx", 
      data: '{"Name":"AA"}', 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'html', 
      success: function (data) {      
       bmx = "http://www.vitalbmx.com"; 
       $('a.varURL').attr('href', bmx); 
       GUID = data;      
       alert("Good response - " + data + " - " + bmx); 
      }, 
      error: function (data, success, error) { 
       alert("Error : " + error); 
      } 
     }); 
     return false; 
    } 
</script> 

С помощью этого метода Ajax Я делаю вызов некоторым статическим методом в фоновом режиме

+1

Вы пытаетесь напрямую вызвать код C# из JavaScript? –

+3

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

+0

Возможный дубликат [Как вызвать статический метод на моей странице ASP.Net, от Javascript?] (Http: // stackoverflow.com/questions/32871225/how-do-i-call-a-static-method-on-my-asp-net-page-from-javascript) –

ответ

1

I want it only when I click on my div. < = При нажатии на DIV, что делается в браузере после того, как запрос был отправлен. Браузер не имеет возможности напрямую звонить внутри метода в вашем приложении. HTML уже был сгенерирован и отправлен сервером в запросе клиенту, и именно там этот цикл связи прекращается.

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

  1. Создайте запрос AJAX обратно к контроллеру MVC для получения данных (или что-то еще).
  2. Создать ссылку (стандартный URL)
  3. Создать форму пост обратно

И конечно @MyProject.myMethod() выполняется каждый раз, когда страница выводится, так как Ваше мнение Бритвы коды файл, который интерпретируется построчно чтобы он мог быть отображен и отправлен клиенту, который его запросил. Что было бы здесь, если myMethod вывести некоторый javascript или что-то, что браузер мог бы понять и что-то сделать с этим, это то, чего можно было бы ожидать.

+0

спасибо за совет, я исправил свой код и мой MVC-контроллер, и теперь он работает нормально, спасибо! –

0

Вы не можете это сделать. Все выражения @ (Razor) разрешаются во время рендеринга страницы на сервере. Вот почему вы вызываете метод.

Возможно, вам нужно позвонить Ajax.

Посмотрите на более подробное объяснение здесь: How do I call a static method on my ASP.Net page, from Javascript?

+1

Если вы нашли вопрос, который совпадает с текущим, пожалуйста, используйте ссылку флага под вопросом, чтобы обозначить ее как дубликат этого. –

+0

Спасибо @ just.ru, я не был знаком с Razor и не знал о его поведении ... как вы предположили, я использовал Ajax, который отлично работает сейчас. благодаря! –

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