2015-06-11 3 views
0

Я не нашел решение для своей проблемы. Я использую asp.net mvc. В моем представлении я пытаюсь вызвать метод на Buttonclick. Это как кнопка выглядит на данный моментCall Method from View on Button click without reload

<button type="button" id="@openButtonID" data-loading-text=" öffnen..." class="btn btn-primary" autocomplete="off" onclick="location.href='@Url.Action("Open", "Home", new {index =i})'" disabled="@notConnected"> 

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

<button type="button" id="@openButtonID" data-loading-text=" öffnen..." class="btn btn-primary" autocomplete="off" onclick="@{((GateControl.Controllers.HomeController)this.ViewContext.Controller).Open(i);}" disabled="@notConnected"> 

Но это просто вызывает метод, если загружен вид. Когда я попробовал это, я установил возврат метода к пустоте. Также я попробовал это, как описано в this. Либо веб-сайт перезагружен, либо я не смог попасть в этот метод. Я также попробовал несколько фрагментов кода из переполнения стека, но он не работал.

Это как метод выглядит

[CustomAuthorize] 
public void Open(int index) 
{ 

    //some code 

} 

ответ

1

Поскольку вы уже пытались что-то с JQuery я полагаю, что вы используете библиотеку. Что вы можете сделать, это связать событие click с вашей кнопкой и внутри, чтобы сделать GET ajax-вызов. Вы можете использовать атрибут «data-» в своей кнопке, чтобы ваш url был создан на сервере и доступен на клиенте.

<button id="button-id" class="btn btn-primary" data-loading-text=" öffnen..." data-url="@Url.Action("Open", "Home", new {index =i})" disabled="@notConnected" autocomplete="off"> 

Это следует сделать это:

$("#button-id").click(function(){ 
     var url = $("#button-id").data("url"); 
     $.get(url , function(result) { 
      //do something with the result if you ever need to 
     }); 
    }); 

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

+0

Спасибо. Это работает нормально. – kunsti

0

Вот полный код, я использую

<script src="~/Scripts/jquery-1.10.2.min.js" type="text/javascript"></script> 
<button type="button" id="@openButtonID" data-loading-text=" öffnen..." class="btn btn-primary" autocomplete="off" data-url="@Url.Action("Open", "Home" , new {index=i+1})" disabled="@notConnected"> 
          Öffnen 
         </button><br /><br /> 
          <script type="text/jscript"> 
    $("#@openButtonID").click(function() { 
     var url = $("#@openButtonID").data("url"); 
     $.get(url, function (result) { 
      //do something with the result if you ever need to 
     }); 
    }); 
         </script> 
0

Miraco правильно, вы должны использовать $(). Ajax в этом ... Разделите вашу страницу в тех областях, которые должны быть перезагружен и использовать Ajax звонки перезагрузите их, иначе вы получите новую страницу при каждом вызове, чтобы все было перезагружено.