2012-02-13 3 views
0
using Visual.Web.Developer.2010.Express; 
using SQL.Server.Management.Studios.R2.Express; 

То, что я пытаюсь сделать, это получить кнопку, чтобы запустить некоторые C# при нажатии кнопки .. Звучит просто, не так ли? .. я застрял в этой части.

У меня есть интервал (кнопка пользовательского интерфейса JQuery), созданный при нажатии кнопки пользователя на входе HTML. Как только они нажимают на диапазон, он сохраняет введенный пользователем и отправляет его в базу данных ... Ну, еще не совсем. Я строю это, и я застрял в этой части.JQuery кнопка диапазона говоря «Button1_Click не определен»

Можно было бы прикрепить кнопку click через атрибут в теге span, правильно?

<span class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" title="Save" style="float:left" onclick="Button1_Click"></span> 



C#

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Console.WriteLine("Hello World"); 
} 



Выглядит довольно просто, не так ли? Когда я запускаю это при отладке, Firebug читает «Button1_Click не определен»
.
.
.
Прошу прощения!

Мой HTML/Javascript код

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('.hexen').after('<span class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" title="Save" style="float:left" onclick="Button1_Click"></span>')// ui icon 

    .keypress(function() { 
     $(this).next('.saveButton').show(); 
    }); //adds ui icon 

     $('.ui-state-default').hover(
    function() { 
     $(this).addClass('ui-state-hover'); 
    }, function() { 
     $(this).removeClass('ui-state-hover'); 
    }); //ui icon hover 

     $('.saveButton').click(function() { 
      var id = $(this).prev().attr('id'); //used in the "data" attribute of the ajax call 
      var value = $(this).prev().val(); //used in the "data" attribute of the ajax call 

      $.ajax({ 
       type: "POST", 
       url: "Default.aspx", 
       data: "{Id: " + id + ", Value: " + value + "}", 
       dataType: "json", 
       contentType: "application/json; charset=utf-8", 
       success: function (data) { 
        console.log(data); 
       } 
      }); 
      $(this).hide(); 
     }); //runs ajax call and removes ui-icon after .saveButton is clicked 

    }); //end .ready 
</script> 

<input type="text" class="hexen" id="investigate1"/><br /> 
<input type="text" class="hexen" id="investigate2"/><br /> 
<input type="text" class="hexen" id="investigate3"/><br /> 
<input type="text" class="hexen" id="investigate4"/><br /> 
<input type="text" class="hexen" id="investigate5"/> 



Заранее спасибо!

+0

'OnClick =«Button1_Click»' пытается уволить функцию JavaScript под названием 'Button1_Click'. –

ответ

2

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

onclick всегда будет искать обработчик или метод на стороне клиента кода JavaScript.

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

Как только вы нажмете на кнопку Asp.Net, она отправит текущую страницу на сервер с необходимыми данными в инфраструктуру asp.net, чтобы она выполнила требуемый обработчик щелчка.

E.g. Вы можете использовать LinkButton control like this и указать OnClick свойство Button1_Click и OnClientClick property, чтобы вызвать любой метод javascript на стороне клиента.

<asp:LinkButton Text="Click me!" 
     OnClick="Button1_Click" runat="server" 
     OnClientClick="clientSideJavaScriptFunction()" /> 
1

От взгляда этого вам не нужно «OnClick» обработчик пролете, так как вы связываете с ним в JavaScript в любом случае:

$('.saveButton').click(....); 

Также onclick обработчик, который вам «В поле есть ссылка на обработчик на стороне сервера для событий C#, а не обработчик на стороне клиента для событий javascript. Значение onclick должно быть функцией, доступной для кода на стороне клиента в javascript. Если вы хотите отправить данные на сервер нажатием кнопки, вам необходимо выполнить запрос AJAX (например, вы) в javascript.

Наконец, обработчик событий, который вы пытаетесь связать с .saveButton в javascript, не будет работать, поскольку вы пытаетесь связать его (возможно) до того, как документ завершит загрузку. Переместите привязку события в блок document.ready после того, как вы вызвали after по адресу .hexen.

0

Я не уверен точно, как это работает на C#, но я думаю, вам нужно ссылаться на функцию в URL-адресе вызова ajax.

url: "Default.aspx/Button1_Click",

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

EDIT: Проверьте «Вызов метода страницы с помощью JQuery вместо» раздела этой страницы: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

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