Saya sedang menulis halaman web di ASP.NET. Saya memiliki beberapa kode JavaScript, dan saya memiliki tombol kirim dengan acara klik.
Apakah mungkin untuk memanggil metode yang saya buat di ASP dengan acara klik JavaScript?
javascript
c#
asp.net
onclick
MattSayar
sumber
sumber
Jawaban:
Nah, jika Anda tidak ingin melakukannya menggunakan Ajax atau cara lain dan hanya ingin postback ASP.NET normal terjadi, berikut adalah cara Anda melakukannya (tanpa menggunakan perpustakaan lain):
Agak sulit sih ... :)
saya. Dalam file kode Anda (dengan asumsi Anda menggunakan C # dan .NET 2.0 atau lebih baru) tambahkan Interface berikut ke kelas Halaman Anda agar terlihat seperti
ii. Ini harus menambahkan (menggunakan Tab- Tab) fungsi ini ke file kode Anda:
aku aku aku. Dalam acara onclick Anda di JavaScript, tulis kode berikut:
Ini akan memanggil metode 'RaisePostBackEvent' dalam file kode Anda dengan 'eventArgument' sebagai 'argumentString' yang Anda berikan dari JavaScript. Sekarang, Anda dapat memanggil acara lain yang Anda suka.
PS: Itu 'underscore-underscore-doPostBack' ... Dan, seharusnya tidak ada ruang dalam urutan itu ... Entah bagaimana WMD tidak memungkinkan saya untuk menulis ke garis bawah diikuti oleh karakter!
sumber
window.onbeforeunload = confirmExit; //debugger; function confirmExit() { var pageId = '<%= Page.ClientID %>'; var argumentString = 'ReleaseLock'; __doPostBack(pageId, argumentString); }
onkeyup
acara. PunyaJavaScript runtime error: '__doPostBack' is undefined
. Saya menggunakan C # dan ASP.NET 2.0.The
__doPostBack()
Metode bekerja dengan baik.Solusi lain (sangat peretasan) adalah dengan hanya menambahkan tombol ASP tidak terlihat di markup Anda dan klik dengan metode JavaScript.
Dari JavaScript Anda, ambil referensi ke tombol menggunakan ClientID dan kemudian panggil metode .click () di atasnya.
sumber
The Microsoft AJAX perpustakaan akan mencapai hal ini. Anda juga dapat membuat solusi Anda sendiri yang melibatkan penggunaan AJAX untuk memanggil file skrip aspx Anda sendiri (seperti pada dasarnya) untuk menjalankan fungsi .NET.
Saya menyarankan perpustakaan Microsoft AJAX. Setelah diinstal dan direferensikan, Anda hanya menambahkan baris di halaman Anda memuat atau init:
Maka Anda dapat melakukan hal-hal seperti:
Kemudian, Anda dapat menyebutnya di halaman Anda sebagai:
Parameter terakhir dari panggilan fungsi Anda haruslah fungsi panggilan balik javascript yang akan dieksekusi ketika permintaan AJAX dikembalikan.
sumber
Anda dapat melakukannya secara asinkron menggunakan .NET Ajax PageMethods. Lihat di sini atau di sini .
sumber
Saya pikir posting blog Cara mengambil & menampilkan data database SQL Server di halaman ASP.NET menggunakan Ajax (jQuery) akan membantu Anda.
Kode JavaScript
Fungsi Sisi Server ASP.NET
sumber
Pemrograman statis yang sangat diketik selalu terasa sangat alami bagi saya, jadi pada awalnya saya menolak belajar JavaScript (belum lagi HTML dan CSS) ketika saya harus membangun front-end berbasis web untuk aplikasi saya. Saya akan melakukan apa saja untuk mengatasi hal ini seperti mengarahkan ulang ke halaman hanya untuk melakukan dan bertindak pada acara OnLoad, selama saya bisa mengkodekan C # murni.
Namun Anda akan menemukan bahwa jika Anda akan bekerja dengan situs web, Anda harus memiliki pikiran terbuka dan mulai berpikir lebih berorientasi web (yaitu, jangan mencoba untuk melakukan hal-hal sisi klien di server dan sebaliknya) . Saya suka bentuk web ASP.NET dan masih menggunakannya (dan juga MVC ), tetapi saya akan mengatakan bahwa dengan mencoba membuat hal-hal lebih sederhana dan menyembunyikan pemisahan klien dan server dapat membingungkan pendatang baru dan akhirnya membuat hal-hal lebih sulit di kali .
Saran saya adalah mempelajari beberapa JavaScript dasar (cara mendaftar acara, mengambil objek DOM, memanipulasi CSS, dll.) Dan Anda akan menemukan pemrograman web jauh lebih menyenangkan (belum lagi lebih mudah). Banyak orang menyebutkan perpustakaan Ajax yang berbeda, tetapi saya tidak melihat contoh Ajax yang sebenarnya, jadi begini saja. (Jika Anda tidak terbiasa dengan Ajax, semua itu, membuat permintaan HTTP asinkron untuk menyegarkan konten (atau mungkin melakukan tindakan sisi server dalam skenario Anda) tanpa memuat ulang seluruh halaman atau melakukan postback penuh.
Sisi klien:
Itu dia. Meskipun namanya bisa menyesatkan, hasilnya bisa berupa teks biasa atau JSON, Anda tidak terbatas pada XML. jQuery menyediakan antarmuka yang bahkan lebih sederhana untuk membuat panggilan Ajax (di antara menyederhanakan tugas JavaScript lainnya).
Permintaan dapat berupa HTTP-POST atau HTTP-GET dan tidak harus ke laman web, tetapi Anda dapat memposting ke layanan apa pun yang mendengarkan permintaan HTTP seperti RESTful API. ASP.NET MVC 4 Web API membuat pengaturan layanan web sisi server untuk menangani permintaan juga. Tetapi banyak orang tidak tahu bahwa Anda juga dapat menambahkan pengontrol API ke proyek formulir web dan menggunakannya untuk menangani panggilan Ajax seperti ini.
Sisi server:
Global.asax
Kemudian cukup daftarkan rute HTTP di file Global.asax Anda, jadi ASP.NET akan tahu cara mengarahkan permintaan.
Dengan AJAX dan Pengontrol, Anda dapat memposting kembali ke server kapan saja secara serempak untuk melakukan operasi sisi server apa pun. Pukulan satu-dua ini memberikan fleksibilitas JavaScript dan kekuatan C # / ASP.NET, memberi orang-orang yang mengunjungi situs Anda pengalaman keseluruhan yang lebih baik. Tanpa mengorbankan apapun, Anda mendapatkan yang terbaik dari kedua dunia.
Referensi
sumber
Ini adalah perpustakaan bernama AjaxPro yang ditulis MVP bernama Michael Schwarz . Perpustakaan ini tidak ditulis oleh Microsoft.
Saya telah menggunakan AjaxPro secara luas, dan ini adalah perpustakaan yang sangat bagus, yang saya rekomendasikan untuk panggilan balik sederhana ke server. Ini berfungsi dengan baik dengan versi Microsoft Ajax tanpa masalah. Namun, saya akan perhatikan, dengan betapa mudahnya Microsoft membuat Ajax, saya hanya akan menggunakannya jika benar-benar diperlukan. Dibutuhkan banyak JavaScript untuk melakukan beberapa fungsi yang sangat rumit yang Anda dapatkan dari Microsoft dengan hanya memasukkannya ke panel pembaruan.
sumber
Sangat mudah untuk kedua skenario (yaitu, sinkron / asinkron) jika Anda ingin memicu pengendali acara sisi server, misalnya, acara klik Tombol.
Untuk memicu pengendali acara kontrol: Jika Anda sudah menambahkan ScriptManager pada halaman Anda maka lewati langkah 1.
Tambahkan berikut ini di bagian skrip klien halaman Anda
Menulis pengendali acara sisi server untuk kontrol Anda
btnSayHello_ello klik kosong (pengirim objek, EventArgs e) {Label1.Text = "Hello World ..."; }
Tambahkan fungsi klien untuk memanggil pengendali acara sisi server
function SayHello () {__doPostBack ("btnSayHello", ""); }
Ganti "btnSayHello" dalam kode di atas dengan id klien kontrol Anda.
Dengan melakukannya, jika kontrol Anda ada di dalam panel pembaruan, halaman tidak akan disegarkan. Itu sangat mudah.
Satu hal lain untuk dikatakan adalah: Berhati-hatilah dengan id klien, karena itu tergantung pada kebijakan pembuatan ID Anda yang ditentukan dengan properti ClientIDMode.
sumber
Jika orang lain seperti Merk, dan mengalami kesulitan untuk datang ini, saya punya solusi:
Ketika Anda memiliki kontrol pengguna, tampaknya Anda juga harus membuat PostBackEventHandler di halaman induk. Dan kemudian Anda dapat memanggil PostBackEventHandler kontrol pengguna dengan memanggilnya secara langsung. Lihat di bawah:
Di mana UserControlID adalah ID yang Anda berikan kontrol pengguna pada halaman induk ketika Anda menyarangkannya di mark up.
Catatan: Anda juga bisa langsung memanggil metode milik kontrol pengguna itu secara langsung (dalam hal ini, Anda hanya perlu penangan RaisePostBackEvent di halaman induk):
sumber
Anda mungkin ingin membuat layanan web untuk metode umum Anda.
Tambahkan saja WebMethodAttribute ke fungsi yang ingin Anda panggil, dan hanya itu saja.
Memiliki layanan web dengan semua hal umum Anda juga membuat sistem lebih mudah dirawat.
sumber
Jika fungsi __doPostBack tidak dihasilkan pada halaman Anda perlu memasukkan kontrol untuk memaksanya seperti ini:
sumber
Mengenai:
Itu harus seperti:
Di mana formID adalah ID kontrol ASP.NET di file .aspx.
sumber
Tambahkan baris ini ke pemuatan halaman jika Anda mendapatkan kesalahan yang diharapkan objek.
sumber
Anda dapat menggunakan
PageMethods.Your C# method Name
untuk mengakses metode C # atau metode VB.NET ke dalam JavaScript.sumber
Coba ini:
Atau ini
Gunakan properti OnClientClick pada tombol untuk memanggil fungsi JavaScript ...
sumber
Anda juga bisa mendapatkannya dengan hanya menambahkan baris ini dalam kode JavaScript Anda:
Saya pikir ini sangat mudah!
sumber
Silakan coba ini:
ddlVoucherType adalah kontrol yang akan dipanggil oleh perubahan indeks yang dipilih ... Dan Anda dapat menempatkan fungsi apa pun pada perubahan indeks yang dipilih dari kontrol ini.
sumber
Cara paling sederhana dan terbaik untuk mencapai ini adalah dengan menggunakan
onmouseup()
acara JavaScript daripadaonclick()
Dengan begitu Anda akan memecat JavaScript setelah Anda mengklik dan itu tidak akan mengganggu
OnClick()
acara ASP .sumber
Saya mencoba ini dan saya bisa menjalankan metode Asp.Net saat menggunakan jQuery.
Lakukan pengalihan halaman dalam kode jQuery Anda
Kemudian gunakan Query String di Page Load
Jadi tidak perlu menjalankan kode tambahan
sumber
Balasan ini bekerja seperti angin bagi saya, terima kasih lintas browser:
Solusi lain (sangat peretasan) adalah dengan hanya menambahkan tombol ASP tidak terlihat di markup Anda dan klik dengan metode JavaScript.
Dari JavaScript Anda, ambil referensi ke tombol menggunakan ClientID-nya dan kemudian panggil metode .Click () di atasnya:
sumber