Halaman Kelas. Penyetempatan mudah aplikasi Web. Akses sifat halaman induk

Mungkin temu bual yang jarang berlaku di ASP.NET tidak lengkap tanpa soalan tentang kitaran hayat halaman dalam Borang Web ASP.NET (selepas ini dirujuk sebagai singkatan ASP.NET). Mari cuba memahami isu ini. Saya membahagikan topik kepada dua. Dalam artikel ini kita akan menganalisis peringkat kitaran hidup halaman dalam ASP.NET.

Kitaran Hayat Rancangan Am Halaman ASP.NET
  • menerima dan memproses permintaan halaman oleh pelayan web IIS
  • seterusnya menghantar permintaan kepada masa jalan ASP.NET
  • masa jalan:

    * memuatkan kelas halaman yang dipanggil * menetapkan sifat kelas halaman * membina pepohon elemen * mengisi sifat Permintaan dan Respons * memanggil kaedah ```IHttpHandler.ProcessRequest```

peringkat

Terdapat 8 peringkat utama. Ini jelas ditunjukkan oleh rajah berikut

Penerangan Pentas
Halaman permintaan Permintaan halaman berlaku sebelum kitaran hayat halaman bermula. Pengguna membuat permintaan, dan masa jalan ASP.NET menentukan sama ada halaman itu harus disusun dan memulakan kitaran hayatnya, atau sama ada ia boleh menyampaikan halaman cache sebagai respons tanpa melaksanakan halaman.
Mula memproses Pada peringkat ini, sifat Respons dan Request dan sifat UIculture ditetapkan. Langkah ini juga menentukan sama ada halaman itu diminta hasil daripada postback dan menetapkan sifat IsPostBack sewajarnya.
Permulaan halaman Pada masa halaman dimulakan, semua pengguna kanak-kanak kawalan telah dibuat dan mempunyai set sifat UniqueID. Pada masa ini, tema digunakan pada halaman. Jika halaman dipanggil sebagai hasil daripada postback, maka data yang dihantar ke pelayan masih belum dimuatkan ke dalam sifat kawalan pada ketika ini.
Jika halaman dipanggil sebagai hasil postback, maka pada peringkat ini sifat kawalan ditetapkan berdasarkan maklumat keadaan (ViewState dan ControlState).
Pengesahan Kaedah Validate() dipanggil untuk semua pengesah pada halaman.
Pemprosesan pos balik Pengendali acara dipanggil jika pos balik telah berlaku.
Penyampaian Nyatakan maklumat disimpan, kemudian kelas halaman memanggil kaedah yang sesuai elemen kanak-kanak mengawal untuk menjana perwakilan HTML dan menyerahkannya kepada Response.OutputStream.
Memunggah Pemunggahan berlaku selepas perwakilan HTML untuk keseluruhan halaman telah dibuat.
Gaidar Magdanurov
Memperkenalkan ASP.NET 2.0 pengenalan

Setiap kali anda membangunkan projek dan mencipta aplikasi Web, anda menggunakan dengan pelbagai cara untuk mencipta seni bina aplikasi, mengedit kod dan menerbitkan hasil kerja anda pada pelayan Web. Pada masa yang sama, bagi pengguna akhir, aplikasi Web dengan sebarang kerumitan kekal sebagai satu set halaman HTML, setiap satunya mempunyai URL uniknya sendiri. Pada amnya, pengguna tidak peduli dengan platform atau teknologi yang mana aplikasi itu dicipta. Pengguna mempunyai matlamat yang ingin dicapai dan ubat universal, hampir semua pelayar Web yang dia gunakan. Ini adalah kelebihan besar aplikasi untuk Internet berbanding aplikasi untuk sistem desktop– kewujudan “bahasa komunikasi” yang diterima umum, kod HTML. Untuk menggunakan aplikasi Web, cukup untuk memasangnya pada pelayan, selepas itu aplikasi itu boleh diakses oleh mana-mana pelanggan dengan pelayar Web dipasang. Malangnya, terdapat juga masalah yang jelas di sini Pemprosesan HTML kod daripada pelayar daripada pengeluar yang berbeza.
Tugas pembangun adalah untuk mencipta aplikasi yang menjana kod HTML yang optimum untuk kebanyakan pelayar yang digunakan oleh pengguna akhir. Setiap teknologi yang digunakan untuk mencipta aplikasi Web membolehkan anda menjana kod HTML, jadi, akhirnya, pilihan teknologi untuk mencipta aplikasi Web hanya bergantung pada kemudahan dan kelajuan pembangunan dan kemudahan penggunaan dan sokongan produk akhir.
Kelebihan teknologi ASP.NET berbanding yang lain ialah tahap abstraksi yang tinggi yang dibina di atas HTML standard kod: penggunaan paradigma berorientasikan objek, sokongan untuk beberapa bahasa pengaturcaraan, kehadiran asas universal yang mengandungi beribu-ribu penyelesaian yang sedia untuk digunakan dalam projek - Microsoft .NET Framework.
Selain itu, untuk membangunkan aplikasi, sebarang persekitaran pembangunan atau editor teks boleh digunakan, membolehkan anda membuat, mengedit dan menyimpan fail teks. Jika pembangun ingin memanfaatkan kuasa penuh Microsoft . Rangka Kerja NET dan ASP.NET dan, pada masa yang sama, membelanjakan sedikit usaha yang mungkin, maka dia perlu menggunakan persekitaran pembangunan yang sesuai untuk tugasnya. Salah satu yang paling cara yang berkesan mencipta aplikasi Web ASP.NET ialah Microsoft Studio Visual. Sokongan ASP.NET 2.0 disertakan dalam Visual Studio 2005.
Artikel ini secara ringkas memperkenalkan kebanyakan ciri baharu dalam ASP.NET 2.0, versi baharu rangka kerja ASP.NET. Selanjutnya dalam teks itu diandaikan bahawa pembaca sudah biasa dengan teknologi ASP.NET 1.0 atau ASP.NET 1.1. Jika topik yang sedang dipertimbangkan melangkaui skop artikel, maka hiperpautan ke artikel yang mengandungi maklumat terperinci terletak terus dalam teks. Juga, pada penghujung artikel terdapat senarai rujukan dalam susunan maklumat dalam artikel ini dibentangkan.

Menggunakan pelbagai bahasa pengaturcaraan

Microsoft .NET Framework dan Visual Studio 2005 menyokong beberapa bahasa pengaturcaraan seperti Visual Basic, Visual C#, Visual C++, Visual J#. Kerana bahasa ini menggunakan CLR biasa (Common Language Runtime) dan mematuhi piawaian biasa CLS (Spesifikasi Bahasa Biasa), kemudian perhimpunan yang dibuat menggunakan salah satu bahasa .NET boleh digunakan dalam projek yang dibangunkan dalam bahasa pengaturcaraan lain, sama seperti perhimpunan ini dan aplikasi ditulis dalam bahasa yang sama.
Dengan keluaran Microsoft .NET Framework 2.0 ia menjadi mungkin untuk digunakan dalam projek yang sama perbezaan bahasa pengaturcaraan. Hakikat bahawa aplikasi Web ASP.NET boleh ditulis dalam beberapa bahasa pengaturcaraan adalah sangat mudah jika terdapat penyelesaian yang terbukti dalam salah satu bahasa, dan projek itu ditulis menggunakan bahasa lain, atau jika pasukan itu mempunyai pembangun menggunakan kaedah yang berbeza. bahasa pengaturcaraan. Anda boleh membaca tentang cara menggunakan bahasa yang berbeza dalam satu projek dalam artikel ini.


Teknologi perkongsian kod

Teras segala-galanya dalam aplikasi Web ialah halaman. Pengguna, menggunakan penyemak imbas, bergerak antara halaman, secara berkala kembali ke halaman yang dilihat sebelum ini, memasukkan beberapa data ke dalam bentuk HTML dan memperoleh beberapa hasil. Dalam ASP.NET, halaman selalunya merupakan borang Web yang mengandungi pelbagai kawalan yang bertindak balas kepada peristiwa yang dihasilkan oleh pengguna.
ASP.NET 1.x membolehkan anda memisahkan kod logik daripada kod persembahan, iaitu, letakkan kod logik program halaman dalam fail .cs atau .vb, berasingan daripada kod halaman itu sendiri, diletakkan dalam fail .aspx. Teknologi ini dipanggil Code-Behind. Oleh itu, reka bentuk halaman boleh diubah tanpa menjejaskan kod halaman, yang membolehkan anda berkongsi tanggungjawab penampilan dan kerja halaman antara pereka bentuk dan pengaturcara. Untuk melakukan ini, anda boleh menetapkan parameter arahan Halaman dalam fail .aspx.

Tetapi untuk menyokong penyuntingan dengan menggunakan Microsoft Visual Studio .NET dalam halaman ASP.NET mesti menentukan kelas yang sepadan dengan halaman ini dan fail di mana kod untuk kelas ini terletak. Untuk melakukan ini, arahan Halaman ditukar menggunakan kata kunci Codebenind dan Inherits.

ASP.NET 2.0 menggunakan mekanisme pemisahan kod yang berbeza. Dalam arahan Halaman, anda mesti menggunakan kata kunci lain: CodeFile dan Inherits.

Dalam kes ini, kod kelas logik program halaman akan diletakkan dalam fail yang dinyatakan dalam atribut CodeFile. Perlu diingatkan bahawa Visual Studio 2005 menggunakan kelas separa.

Kelas separa awam Lalai: System.Web.UI.Page ( protected void Page_Load(penghantar objek, EventArgs e) ( ) )

Oleh itu, pembangun boleh meletakkan kod kelas dalam beberapa fail, tetapi penyebaran kod sedemikian menjadikan aplikasi sangat besar dan sukar untuk diselenggara dan dibangunkan.
Model Code-Behind yang digunakan dalam Visual Studio 2003 mempunyai beberapa kelemahan yang sangat ketara. Pertama sekali, menggunakan Visual Studio, pembangun mesti menyusun projek sebelum menerbitkan kerana ASP.NET menyusun halaman hanya jika atribut Src ditentukan, yang tidak digunakan oleh Visual Studio. Pada masa yang sama, memandangkan persekitaran ASP.NET mengesan perubahan dalam tarikh penciptaan pemasangan, selepas setiap penggantian pemasangan lama dalam direktori bin, domain aplikasi dimulakan semula, yang mengakibatkan "kelembapan" sementara dalam aplikasi.
Visual Studio 2005 menggunakan baru kata kunci, disokong oleh masa jalan ASP.NET 2.0, dan masa jalan pula, menggunakan Teknologi baru penyusunan halaman. Ini membolehkan anda menyelesaikan masalah menggantikan pemasangan dengan yang lebih baru.
Walaupun begitu, Visual Studio 2005 masih membenarkan anda beralih daripada pemisahan kod dan meletakkan kod logik program dalam fail halaman itu sendiri, dan menggunakan . Selain itu, secara lalai, Visual Studio mencipta halaman tanpa pemisahan kod.

Menyusun halaman atas permintaan

Mari bandingkan tindakan yang ASP.NET 2.0 dan ASP.NET 1.0 lakukan apabila pengguna meminta fail dengan sambungan .aspx. Dalam ASP.NET 1.x, masa jalan menghuraikan arahan Halaman halaman, mencari kelas yang sepadan dalam pemasangan aplikasi, kemudian berdasarkan kod halaman, kelas dicipta yang diperoleh daripada kelas logik program halaman. Jika himpunan tiada, fail logik program yang dinyatakan dalam atribut Src arahan Halaman dicari. Jika fail ditemui, perhimpunan akan disusun; jika tidak, ASP.NET membuang pengecualian.
Dalam ASP.NET 2.0, masa jalan juga menghuraikan arahan Halaman, mencari perhimpunan yang sepadan dengan kelas logik halaman, dan kemudian mencipta kelas halaman. Tidak seperti ASP.NET 1.x, kelas induk untuk kelas halaman ialah System.Web.UI.Page, kerana kelas dinamik yang dibuat ialah kelas halaman itu sendiri (menggunakan kelas separa untuk kelas halaman dan kelas logik aplikasi) , dan bukan keturunan logik kelas aplikasi. Oleh itu, jika dalam ASP.NET 1.x kelas borang Web boleh dipanggil sama dengan borang Web itu sendiri.

... kelas awam frmDefault: System.Web.UI.Page ( protected void Page_Load(penghantar objek, EventArgs e) ( ) )

Dalam ASP.NET 2.0, ini tidak dibenarkan kerana kawalan System.Web.UI.Form ialah ahli kelas.
Kelebihan utama ASP.NET ialah jika tiada pemasangan yang diperlukan untuk menjalankan halaman, hanya fail logik halaman yang disusun, tanpa menyusun semula keseluruhan pemasangan. Memandangkan terdapat kompilasi dinamik, adalah perlu untuk menyediakan keupayaan untuk mencipta kod yang biasa kepada semua halaman aplikasi. Untuk tujuan ini, dalam ASP.NET 2.0 terdapat direktori khas yang merupakan direktori anak direktori akar aplikasi, salah satunya ialah App_Code, digunakan untuk menyimpan fail yang mengandungi kod am untuk semua halaman. Apabila kompilasi dinamik dilakukan, kod daripada direktori App_Code disusun dan disediakan untuk semua halaman aplikasi Web. Pada masa yang sama, Visual Studio 2005 menyokong kod yang terletak dalam direktori App_Code, jadi penyerlahan sintaks dan IntelliSense berfungsi.
Anda boleh memeriksa fail yang dijana oleh masa jalan ASP.NET 2.0 dan memahami proses penyusunan secara terperinci dengan memeriksa kandungan direktori: %WINDIT%\Microsoft.NET\Framework\version\Temporary ASP.NET Files\application_name, di mana ASP .NET 2.0 menempatkan perhimpunan yang dijana secara dinamik. Atau, setelah menyebabkan ralat pada halaman ASP.NET dalam mod nyahpepijat, pilih pautan Tunjukkan Sumber Kompilasi Lengkap.

Jika anda perlu menyusun projek terlebih dahulu, sebelum menggunakannya pada pelayan dalam ASP.NET 2.0, adalah mungkin untuk menyusun sepenuhnya atau sebahagiannya aplikasi Web. Anda boleh membaca lebih lanjut mengenai prakompilasi dalam artikel ini.

Perubahan kepada struktur projek Visual Studio

Visual Studio 2005 tidak lagi mengandungi fail .csproj atau .vbproj yang telah dicipta sebelum ini untuk setiap jenis projek ASP.NET. Daripada fail projek, Visual Studio menggunakan struktur direktori, jadi untuk memasukkan fail sedia ada dalam projek, salin sahaja ke dalam direktori projek. Perlu diingat bahawa jika fail atau direktori dipadamkan daripada pokok fail projek dalam tetingkap Solution Explorer, fail atau direktori itu dialih keluar secara fizikal daripada sistem fail.

ASP.NET 2.0 Halaman @Arahan Halaman

Untuk membawa ciri baharu kepada ASP.NET 2.0, adalah perlu untuk membuat perubahan dan penambahan pada kelas Halaman. Memandangkan atribut arahan Halaman digunakan untuk menetapkan sifat halaman dalam masa reka bentuk, atribut baharu yang muncul untuk melaksanakan mekanisme pemperibadian, templat reka bentuk, reka letak dan operasi tak segerak halaman akan dibincangkan di sini. Maklumat lanjut tentang penetapan atribut baharu boleh didapati di bahagian artikel yang dikhaskan untuk sifat dan kaedah baharu kelas Halaman.

Async

Menunjukkan antara IHttpHandler atau IHttpAsyncHandler yang mana antara muka kelas halaman dilaksanakan. Selepas menetapkan atribut ini kepada benar, kelas halaman yang dijana secara dinamik akan melaksanakan IHttpAsyncHandler, jika tidak kelas akan melaksanakan IHttpHandler. Jika kelas halaman melaksanakan IHttpAsyncHandler, maka kod halaman boleh dilaksanakan secara tak segerak sehingga peristiwa baharu berlaku dalam kitaran hayat halaman PreRender, pada masa itu kod HTML disegerakkan dan disediakan untuk dihantar ke penyemak imbas klien.

AsyncTimeOut

Membolehkan anda menetapkan had masa untuk melaksanakan operasi tak segerak. Secara lalai, tetapan ini ialah 45 saat.

budaya

Menetapkan set Budaya yang digunakan untuk halaman.

EnableTheming

Membolehkan anda mendayakan atau melumpuhkan sokongan tema. Didayakan secara lalai.

MasterPageFile

Menentukan laluan ke templat yang akan digunakan untuk menjana kod untuk halaman ini.

StyleSheetTheme

Membolehkan anda menetapkan ID kulit yang akan digunakan untuk menukar tema yang dipasang reka bentuk (dalam atribut Tema atau dalam fail web.confg). Dengan cara ini, anda boleh menetapkan tema umum untuk keseluruhan tapak dan menggunakan atribut StyleSheetTheme untuk membuat beberapa perubahan pada reka bentuk keseluruhan halaman dan/atau beberapa kawalan yang terkandung pada halaman.

Tema

Menentukan nama tema yang akan digunakan untuk menggayakan kod untuk halaman ini.

UI budaya

Menetapkan set budaya (Budaya) yang digunakan untuk antaramuka pengguna muka surat.

Kitaran hayat halaman

Kitaran hayat halaman ASP.NET bermula dengan pelayan Web IIS menerima dan memproses permintaan untuk halaman tersebut dan menghantar permintaan itu kepada masa jalan ASP.NET. Apabila permintaan diterima, masa jalan memuatkan kelas halaman yang dipanggil, menetapkan sifat kelas halaman, membina pepohon elemen, mengisi sifat Permintaan dan Respons dan memanggil kaedah IHttpHandler.ProcessRequest. Masa jalanan kemudian menyemak bagaimana halaman itu dipanggil dan jika halaman itu dipanggil dengan menghantar data dari halaman lain, yang akan dibincangkan kemudian, masa jalan menetapkan sifat PreviousPage.
Perlu diingatkan juga bahawa sebagai tambahan kepada peringkat pelaksanaan halaman yang dibincangkan di bawah, terdapat juga peringkat peringkat aplikasi yang tidak khusus untuk halaman tersebut. Butiran tentang peringkat pelaksanaan permohonan ditulis dalam artikel ini.

Penerangan Pentas
Halaman permintaan Permintaan halaman dibuat pada permulaan kitaran hayat halaman. Apabila pengguna membuat permintaan, masa jalan ASP.NET menentukan sama ada halaman itu harus disusun dan memulakan kitaran hayatnya, atau sama ada ia boleh menyampaikan halaman cache sebagai respons, dengan itu tidak melaksanakan halaman.
Permulaan kitaran hidup Pada peringkat ini, sifat Respons dan Request dan sifat UIculture ditetapkan. Juga, pada peringkat ini ia ditentukan sama ada halaman ini telah diminta hasil daripada postback (menghantar data ke pelayan) dan sifat IsPostBack ditetapkan dengan sewajarnya.
Permulaan halaman Pada masa halaman dimulakan, semua kawalan pengguna kanak-kanak telah dibuat dan mempunyai sifat UniqueID yang ditetapkan. Pada masa yang sama, tema digunakan pada halaman. Jika halaman dipanggil sebagai hasil daripada postback, maka data yang dihantar ke pelayan masih belum dimuatkan ke dalam sifat kawalan pada peringkat ini.
Jika halaman dipanggil sebagai hasil postback, maka pada peringkat ini sifat kawalan ditetapkan berdasarkan maklumat keadaan (ViewState dan ControlState).
Pengesahan Kaedah Validate() dipanggil untuk semua pengesah pada halaman.
Pemprosesan pos balik Pengendali acara dipanggil (dengan syarat postback telah berlaku).
Penyampaian Maklumat keadaan disimpan, kemudian kelas halaman memanggil kaedah yang sesuai bagi kawalan kanak-kanak untuk menjana perwakilan HTML dan menghantarnya kepada Response.OutputStream.
Memunggah Pemunggahan berlaku selepas perwakilan HTML untuk keseluruhan halaman telah dibuat.

Semasa kitaran hayat berperingkat, peristiwa berlaku yang, dengan melanggan, membenarkan pembangun melaksanakan kodnya sendiri. Adalah wajar untuk menyebut atribut AutoEventWireup arahan @Page: jika atribut ini ditetapkan kepada benar (nilai lalai), maka kaedah kelas halaman, bernama Page_EventName, secara automatik menjadi pengendali untuk peristiwa kitaran hayat halaman yang sepadan.
Untuk mengesan kitaran hayat halaman dan jujukan kejadian, anda boleh menetapkan atribut Trace arahan @Page kepada benar dan atribut TraceMode kepada "SortByTime". Kemudian dalam bahagian Maklumat Trace anda boleh mencari senarai peristiwa yang berlaku (lajur Mesej). Sebagai contoh:

Maklumat JejakKategori Mesej Daripada Mula-mula Daripada Terakhir
aspx.page Mulakan PreInit
aspx.page Tamatkan PraInit 0.0364973314167865 0.036497
aspx.page Mulakan Init 0.0379050459346291 0.001408
aspx.page Tamat Init 0.047693704143491 0.009789
aspx.page Mulakan InitComplete 0.0477864508468221 0.000093
aspx.page Tamat InitComplete 0.0481875670270608 0.000401
aspx.page Mulakan PraMuat 0.0489879732516718 0.000800
aspx.page Tamatkan PraMuat 0.0494462283607275 0.000458
aspx.page Mulakan Muatkan 0.0494924892194238 0.000046
aspx.page Beban Tamat 0.0553441897381414 0.005852
aspx.page Mulakan LoadComplete 0.0554711043059809 0.000127
aspx.page Tamat Beban Selesai 0.055942153615399 0.000471
aspx.page Mulakan PraRender 0.0561455634022874 0.000203
aspx.page Tamatkan PraRender 0.0618604874695332 0.005715
aspx.page Mulakan PreRenderComplete 0.06269871008062 0.000838
aspx.page Tamat PreRenderComplete 0.0633259746265858 0.000627
aspx.page Mulakan SaveState 0.080360541216174 0.017035
aspx.page Tamatkan SaveState 0.213795377788888 0.133435
aspx.page Mulakan SaveStateComplete 0.213911298043872 0.000116
aspx.page Tamat SaveStateComplete 0.214385763389788 0.000474
aspx.page Mulakan Render 0.214440078745078 0.000054
aspx.page Tamat Pemberian 0.315044337228923 0.100604


Daripada semua peristiwa kitaran hayat halaman, pembangun hanya boleh melanggan lima, sebagai tambahan kepada peristiwa kawalan kanak-kanak. Peristiwa ini ialah: PreInit, Init, Load, PreRender, Unload. Mari lihat pilihan untuk menggunakan acara ini.

Penggunaan Acara
PreInit

Semasa acara ini, anda boleh menggunakan sifat IsPostBack untuk menentukan sama ada halaman ini dipanggil buat kali pertama atau hasil daripada postback. Dari segi pengurusan halaman, pembangun boleh: membuat kawalan secara dinamik, menetapkan templat atau tema reka bentuk secara dinamik, membaca atau menetapkan sifat objek Profil.

Perlu diingat bahawa pada peringkat ini, jika halaman dipanggil sebagai hasil dari postback, sifat kawalan belum ditetapkan. Jika pembangun menetapkan sifat secara bebas pada peringkat ini, pada peringkat seterusnya tetapkan nilai boleh diubah.

Di dalamnya Pada ketika ini, pembangun boleh membaca atau memulakan sifat kawalan.
Muatkan Pada ketika ini, pembangun boleh membaca atau menukar sifat kawalan.
PraRender Peluang terakhir buat perubahan pada penampilan halaman.
Punggah Membebaskan sumber yang diduduki (menutup sambungan terbuka ke pangkalan data, menutup fail, dsb.)

Adalah penting bahawa pada peringkat ini perwakilan HTML halaman telah dibuat dan percubaan untuk membuat sebarang perubahan (contohnya, dengan memanggil kaedah Response.Write() akan menghasilkan pengecualian.

Sifat dan kaedah baharu bagi objek Halaman

Untuk mengurus acara yang disenaraikan dalam bahagian sebelumnya dan mendapatkan maklumat tentang hasil pelaksanaannya, objek Halaman dalam ASP.NET 2.0 mempunyai kaedah dan sifat baharu berikut. maklumat terperinci Objek dan sifat yang disenaraikan di bawah dan kegunaannya akan dibincangkan dengan lebih lanjut dalam bahagian seterusnya artikel ini.

EnableTheming

Sifat yang membolehkan anda melumpuhkan sokongan untuk tema pada halaman jika penggunaan tema tidak diingini.

GetValidators

Kaedah yang mengembalikan koleksi pengesah untuk halaman ini.

Kepala

Rujukan kepada objek HtmlHead yang membolehkan anda mengawal kandungan bahagian HTML halaman, dengan syarat elemen kepala mempunyai set atribut runat="server".

IsAsync

Sifat yang menunjukkan cara halaman diproses - segerak atau tak segerak.

IsCrossPagePostBack

Harta yang membolehkan anda menentukan sama ada muka surat ini diminta sebagai tindak balas kepada data yang dihantar dari halaman lain.

MasterPageFile

Sifat yang mengandungi nama fail templat halaman.

MaxPageStateFieldLength

Pemasangan saiz maksimum satu medan yang menyimpan keadaan, dalam bait. Jika sifat ini ditetapkan kepada nombor yang kurang daripada saiz maklumat keadaan yang perlu disimpan, maka berbilang medan tersembunyi akan dibuat, masing-masing tidak mempunyai lebih banyak data daripada nilai MaxPageStateFieldLength .

Penyesuai Halaman

Harta ini mengembalikan objek PageAdapter yang mengawal penjanaan perwakilan HTML halaman. PageAdapter tertentu ditetapkan mengikut masa jalan bergantung pada parameter Requets. Jika PageAdapter dipilih, peristiwa kitaran hayat halaman digantikan dengan acara PaeAdapter.

SetFokus

Kaedah yang membolehkan anda menetapkan penyerlahan kepada mana-mana kawalan yang boleh dilihat pada halaman.

StyleSheetTheme, Tema

Lihat di atas untuk penerangan tentang atribut arahan @Page baharu.

TestDeviceFilter

Kaedah yang menyemak sama ada pelayar semasa penyemak imbas jenis yang dinyatakan sebagai hujah.

Tajuk

Sifat yang membolehkan anda mendapatkan dan menukar tajuk halaman.

Menggunakan Objek Halaman ASP.NET 2.0 Baharu Objek ClientScriptManager

ClientScriptManager menyediakan kaedah untuk bekerja dengan kod skrip yang akan digunakan dalam bahagian klien aplikasi Web. Kini semua kaedah yang digunakan dalam ASP.NET 1.x untuk mendaftarkan skrip klien atau medan tersembunyi tergolong dalam kelas ClientScriptManager. Sebagai contoh, kadangkala perlu mendaftarkan skrip klien secara dinamik, bergantung pada beberapa parameter. Sebagai contoh, apabila memuat semula halaman forum, anda perlu menunjukkan kepada pengguna bahawa dia telah menerima mesej peribadi baharu. Ini boleh dilakukan seperti yang ditunjukkan dalam contoh berikut.

Page_Load tidak sah dilindungi(penghantar objek, EventArgs e) ( if (CheckMail()) ( string startupScript = "" + "if(confirm("Anda telah menerima mesej baharu. Baca?"))" + "window.navigate(" /ReadMail .aspx");" + ""; ClientScript.RegisterStartupScript(this.GetType(), "MailAlertScript", startupScript); ) )

Objek HtmlHead

Untuk setiap halaman ASP.NET yang mengandungi teg dalam kod HTMLnya, contoh objek HtmlHead dibuat secara automatik, membolehkan anda mengurus tajuk halaman, tambahkan teg META dan pautan ke helaian gaya berlatarkan.
Sebelum ini, pembangun halaman ASP.NET 1.0 perlu menambah harta khas atau pembolehubah pada kelas halaman atau menghasilkan beberapa jenis penyelesaian untuk dapat mengawal tajuk dan metadata halaman. Sebagai contoh, seperti yang ditunjukkan dalam contoh berikut.

Dengan kemunculan objek HtmlHead, helah sebegitu adalah perkara yang telah berlalu.

Page.Header.Title = "HtmlHead Test Page"; Page.Header.Metadata.Add("Author", "Gaidar Magdanurov"); Page.Header.Metadata.Add("E-Mail", "!} [e-mel dilindungi]");

Selain itu, seperti mana-mana elemen yang boleh mengandungi elemen bersarang, HtmlHead membenarkan anda menambah unsur sewenang-wenangnya.

((Kawalan)Halaman.Tajuk).Kawalan.Tambah(Kawalan Literal baharu (""));

Kawalan Halaman Menetapkan sorotan kepada kawalan

Kadang-kadang perlu bahawa selepas memuatkan halaman, pemilihan harus ditetapkan kepada elemen kawalan tertentu (contohnya, dalam bentuk carian, adalah logik untuk menetapkan fokus input ke medan carian utama), untuk ini anda boleh menetapkan nilai atribut fokus lalai bagi teg borang.

Pemilihan boleh dikawal secara pengaturcaraan dengan memanggil kaedah SetFocus, menghantar pengecam unik elemen ini sebagai parameter:

Page_Load tidak sah dilindungi(penghantar objek, EventArgs e) ( if(isPostBack) ( SetFocus("txtLastName"); ) else ( SetFocus("txtFirstText"); ) )


Mengemas kini data tanpa memuatkan semula halaman

Dalam ASP.NET 2.0, ia menjadi mungkin untuk mengemas kini data pada halaman tanpa menghantar halaman ke pelayan dan kemas kini lengkap. Ini menjadi mungkin berkat kemunculan skrip klien dengan panggilan balik (skrip panggil balik atau panggilan balik klien). Selepas beberapa peristiwa mencetuskan permintaan kepada pelayan, data yang dikemas kini dihantar terus ke skrip klien sebagai argumen fungsi.
Kaedah mengemas kini data pada halaman ini adalah mudah dan menguntungkan untuk digunakan apabila mengemas kini semua maklumat memerlukan banyak sumber dan cukup masa yang lama, manakala bahagian data ini dikemas kini dengan kerap, dan data yang selebihnya adalah statik. Kemudian masa untuk mengemas kini data, sebagai contoh, satu elemen pengguna, dengan mengambil kira masa permintaan kepada pelayan, memproses dan menerima respons, akan jauh lebih rendah daripada masa untuk mengemas kini keseluruhan halaman.
Katakan terdapat halaman yang terdapat senarai juntai bawah. Apabila pengguna memilih nilai daripada senarai, beberapa kawalan dimuatkan dengan nilai yang dikaitkan secara logik dengan nilai yang dipilih daripada senarai. Dalam kes ini, tugas adalah sedemikian sehingga mustahil untuk menyimpan semua data pada bahagian klien (mungkin terdapat terlalu banyak data dan halaman akan mengambil masa yang lama untuk dihantar melalui rangkaian, atau data dijana pada pelayan bukan sahaja bergantung pada elemen senarai juntai bawah yang dipilih pengguna). Dalam ASP.NET 1.x, untuk menyelesaikan masalah ini, anda perlu mengikat kepada peristiwa perubahan nilai dalam senarai juntai bawah kaedah pelayan. Dalam kes ini, senarai harus menyebabkan halaman dihantar ke pelayan setiap kali nilai berubah (AutoPostBack="True").

Dilindungi void ddStatic_SelectedIndexChanged(penghantar objek, EventArgs e) ( // Berdasarkan nilai ddStatic.Items.Value // kaedah menetapkan sifat kawalan lain)

Dalam ASP.NET 2.0, seperti yang dinyatakan di atas, adalah mungkin untuk tidak memuat semula keseluruhan halaman. DALAM dalam kes ini Adalah bijak untuk mengemas kini hanya data yang anda perlukan, kerana mengemas kini seluruh halaman hanya untuk menetapkan satu nilai adalah membazir.
Untuk melaksanakan mekanisme untuk mengemas kini data tanpa memuatkan semula halaman, adalah perlu untuk mencipta fungsi panggil balik klien yang menerima parameter yang diluluskan daripada pelayan, fungsi pelayan, yang menerima parameter daripada klien dan mengembalikan nilai kepada klien berdasarkan parameter yang diterima dan menyambungkan kedua-dua fungsi ini. Lebih-lebih lagi, mekanisme panggil balik dalam ASP.NET 2.0 membolehkan anda mengembalikan hasil secara tidak segerak. Untuk melakukan ini, dua kaedah ditakrifkan dalam antara muka ICallbackEventHandler: RaiseCallbackEvent, untuk menerima parameter pada pelayan dan GetCallbackResult, untuk mengembalikan hasilnya kepada klien. Untuk melaksanakan kefungsian contoh sebelumnya, kod berikut diletakkan dalam fail ASPX.

fungsi UpdateText(hasil, konteks) ( dSpan.innerText = hasil; )

Kelas halaman yang menggunakan fungsi panggil balik mesti melaksanakan antara muka ICallbackEventHandler.

Kelas separa awam ScriptCallback_aspx: System.Web.UI.Page, System.Web.UI.ICallbackEventHandler ( )

Tandatangan fungsi yang menyokong panggilan balik kelihatan seperti ini:

Kekosongan maya awam PrepareCallbackEvent(Argumen rentetan) rentetan maya awam RenderCallbackResult() rentetan peribadi EventArgument = ""; public void PrepareCallbackEvent(string eventArgument) ( EventArgument = eventArgument; ) public string RenderCallbackResult() ( return EventArgument; // nilai taip rentetan }

Langkah terakhir ke arah matlamat ini adalah untuk memautkan fungsi pelayan dan klien.

Page_Load tidak sah dilindungi(penghantar objek, EventArgs e) ( // buat rujukan kepada rentetan fungsi panggil balik callbackFunction = Page.ClientScript.GetCallbackEventReference (ini, "document.all["ddDynamic"].value", "UpdateText", "null " ); // Ikat skrip kepada peristiwa menukar nilai drop-down // list ddDynamic.Attributes["onchange"] = String.Format("javascript:(0)", callbackFunction); )

Kaedah GetCallbackEventReference bagi objek ClientScriptManager mengambil rujukan kepada objek halaman sebagai parameter, rentetan yang menunjukkan nilai yang akan dihantar kepada pelayan dalam panggilan balik, nama kaedah pihak klien dan pelayan yang menerima respons. Penerangan terperinci boleh didapati dalam dokumentasi MSDN atau menggunakan alat Visual Studio - Pelayar Objek.
Menggunakan teknologi ini, anda boleh mencipta kaedah yang kompleks untuk mengemas kini data halaman yang boleh menghasilkan faedah prestasi yang ketara dengan memahami kod yang dijana oleh masa jalan ASP.NET untuk melaksanakan fungsi ini.

// Senarai yang menyebabkan halaman dimuat semula // Senarai yang memanggil kaedah dengan panggilan balik

Fungsi doPostBack standard adalah sangat mudah dan berfungsi untuk menyimpan data acara ke medan borang tersembunyi.

Var theForm = document.forms["frmCallBack"]; fungsi __doPostBack(eventTarget, eventArgument) ( if (theForm.onsubmit == null || theForm.onsubmit()) ( theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); ) )

Apabila menggunakan fungsi dengan panggilan balik, mekanismenya jauh lebih kompleks. Kod fungsi WebForm_DoCallback jauh lebih besar daripada doPostBack kerana fungsi ini menentukan jenis model objek penyemak imbas dan kemudian memuatkan modul yang diperlukan untuk memindahkan data daripadanya. Contohnya, untuk penyemak imbas yang menyokong DOM ini ialah Microsoft.XMLHTTP.
Anda boleh melihat kod untuk pelbagai fungsi klien yang digunakan oleh rangka kerja ASP.NET 2.0 dengan menyimpan halaman yang menyokong fungsi panggil balik ke cakera keras anda dan membukanya dalam penyunting teks fail WebResource.axd, yang dipautkan dalam halaman HTML.
Penerangan yang lebih terperinci tentang keupayaan dan skop fungsi panggil balik pelanggan diterangkan dalam artikel oleh Dino Esposito.

Menyiarkan data borang ke halaman ASP.NET yang lain

Had ketara borang sisi pelayan dalam ASP.NET 1.0 ialah ketidakupayaan untuk memindahkan data yang dimasukkan secara langsung dalam borang ke halaman lain. Untuk menghantar nilai elemen borang ke halaman lain yang perlu anda gunakan HTML mudah borang dan dalam atribut tindakan nyatakan laluan ke halaman yang sepatutnya menerima data. Ini kehilangan faedah menggunakan borang sebelah pelayan.
Dalam ASP.NET 2.0, teg kawalan boleh mempunyai atribut PostBackUrl tambahan yang membolehkan anda menentukan ke halaman mana sistem harus menyerahkan borang Web jika kawalan memulakan penghantaran data ke pelayan.



Selepas mengklik butang, penyemak imbas pengguna akan diubah hala ke halaman crosspost.aspx, dan semua maklumat tentang kawalan borang dari mana data dihantar juga akan dihantar.
Untuk melaksanakan ciri ini, ASP.NET 2.0 menyemak halaman ASPX untuk kehadiran kawalan dengan atribut PostBackUrl yang ditentukan dan, jika ada, mencipta medan tersembunyi tambahan __PREVIOUSPAGE pada halaman, yang mengandungi maklumat tentang keadaan elemen borang. Maklumat ini tersedia untuk halaman penerima melalui harta PreviousPage.

Void Page_Load(penghantar objek, EventArgs e) ( if (PreviousPage != null) ( // Dapatkan objek borang yang dihantar TextBox txtFirstName = (TextBox)PreviousPage.FindControl("txtFirstName"); TextBox txtLastName = (TextPage.PreviousPage FindControl("txtLastName"); // Gunakan data txtInfo.Text = "Selamat petang, " + txtFirstName.Text + "!"; ) )

Pada peringkat kod HTML, menghantar data ke borang lain kelihatan seperti ini.

Daripada mana kita boleh membuat kesimpulan bahawa data borang tidak dihantar terus dari penyemak imbas ke halaman CrossPage.aspx, tetapi mula-mula dihantar ke halaman GetValues.aspx yang sama, yang mengandungi borang frmTest. Ini adalah perlu untuk menyokong pengesahan sisi pelayan bagi data yang dimasukkan menggunakan RequiredFieldValidation, RangeValidation dan kawalan lain. Anda boleh melihat kaedah WebForm_DoPostBackWithOptions dalam fail WebResource.axd yang disebut dalam perenggan sebelumnya artikel ini.

Templat Reka Bentuk Halaman

Apakah perkara pertama yang membezakan satu laman web dengan yang lain? Bagi pengguna Internet biasa, perbezaan utama adalah reka bentuk halaman yang pelbagai. Sebelum menemui kefungsian aplikasi Web, pelawat tapak menilai sama ada dia menyukai penampilan halaman tersebut. Oleh itu, reka bentuk halaman hampir tidak kurang penting daripada fungsi keseluruhan.
Tugas pembangun ialah menulis kod, dan tugas pereka bentuk ialah mencipta reka bentuk luaran dan susun atur kod HTML untuk halaman. Dalam kebanyakan kes, adalah perlu untuk memastikan kemungkinan kerja selari pada kod aplikasi dan templat HTML. Teknologi memisahkan kod logik program dan kod HTML halaman Code-Behind berjaya mengatasinya. Tetapi, pada masa yang sama, apabila bekerja pada setiap halaman, pembangun mempunyai, satu cara atau yang lain, untuk menangani susun atur halaman.
Perlu diingat bahawa kebanyakan laman web moden mempunyai penampilan yang serupa untuk semua halaman dan setiap halaman mempunyai elemen reka bentuk yang sama. Dalam ASP.NET 1.x, elemen reka bentuk halaman biasa dibalut dengan kawalan pengguna dan dimasukkan ke dalam setiap halaman, atau, sebagai alternatif, halaman ditukar kepada kawalan, menggunakan satu halaman sebagai asas di mana kawalan dimuatkan berdasarkan rentetan URL .
Pendekatan dalam ASP.NET 2.0 hampir dengan pendekatan kedua ini, tetapi mengandungi kelebihan yang ketara. Pembangun tidak perlu lagi menukar halaman kepada kawalan pengguna, menjadikan pembangunan dan penyahpepijatan lebih mudah. Ia juga memudahkan kerja pereka bentuk dengan ketara, kerana tugasnya dikurangkan kepada hanya memasukkan beberapa elemen ASP.NET dalam kod halaman templat. Untuk lebih perbandingan terperinci Teknologi templat ASP.NET 2.0 dengan teknik templat sedia ada disyorkan untuk merujuk kepada artikel oleh Fritz Onyen.

Mencipta Templat Reka Bentuk

Templat reka bentuk halaman (halaman induk) ialah halaman ASP.NET biasa yang mempunyai beberapa atribut dan sifat tambahan serta mengandungi satu atau lebih elemen istimewa Pengurusan kandungan Pemegang Tempat. Untuk menukar halaman biasa kepada templat, sudah cukup untuk menggantikan arahan Halaman dengan arahan Induk.
Selepas ini, anda perlu memasukkannya ke dalam penanda halaman elemen pelayan ContentPlaceHolder mengawal, ke bahagian halaman di mana maklumat yang tidak berkaitan dengan reka bentuk keseluruhan akan diletakkan.

halaman rumah saya

Masa:

Sama seperti untuk halaman biasa, dalam fail logik program anda boleh bekerja dengan kawalan sedia ada, mencipta dan menambah yang baharu, berdasarkan parameter permintaan, menukar halaman dan kelakuannya. Oleh itu, anda boleh meletakkan logik untuk mencipta rupa luaran aplikasi Web hampir keseluruhannya ke dalam templat halaman.
Kawalan ContentPlaceHolder membolehkan anda menentukan kandungan yang akan digunakan jika halaman yang menggunakan templat tidak mengatasi kandungan kawalan.

  • Laman utama
  • Isi kandungan

Bekerja dengan kawalan halaman templat tidak berbeza daripada bekerja dengan kawalan untuk halaman biasa. Dengan cara yang sama, anda boleh menentukan kaedah dan sifat yang akan tersedia untuk semua halaman menggunakan templat ini.

Page_Load (pengirim objek, EventArgs e) tidak sah dilindungi ( PageTime.InnerText = DateTime.Now.ToShortDateString(); ) rentetan awam Tajuk ( dapatkan ( kembalikan PageTitle.InnerText; ) set ( PageTitle.InnerText = nilai; ) )

Mencipta halaman

Menggunakan templat reka bentuk mengenakan keperluannya sendiri pada halaman. Oleh kerana templat mengandungi kawalan ContentPlaceHolder, halaman mesti mengandungi kawalan Kandungan yang mengandungi kod penanda dan kawalan lain yang akan dipaparkan pada halaman yang terhasil. Halaman tersebut seharusnya tidak mempunyai sebarang kawalan pelayan atau kod penanda di luar kawalan Kandungan.

  • Muka surat 1
  • Muka surat 2
  • muka surat 3

Sama seperti templat, kod logik halaman dibuat dengan cara biasa. Satu-satunya perbezaan ialah halaman itu tidak mempunyai objek sendiri seperti HeadControl, jadi anda perlu menggunakan pautan ke halaman templat melalui sifat Master.

Halaman_Muat tidak sah dilindungi(penghantar objek, EventArgs e) ( jika (!Page.IsPostBack) Master.Page.Header.Title = "Halaman utama"; } protected void btnShow_Click(object sender, EventArgs e) { PlaceHolder.Controls.Add(new LiteralControl(" alert("Добрый день, " + txtName.Text + ""); ")); Master.Page.Header.Title = "Selamat petang," + txtName.Text; }!}

Untuk mengikat halaman pada templat, gunakan atribut MasterPageFile bagi arahan Halaman. Jika anda perlu mengikat templat yang sama pada semua halaman dalam direktori, maka tidak perlu menentukan atribut MasterPageFile untuk setiap halaman, ia sudah cukup untuk menetapkan templat asas dalam fail web.config.

Selain itu, ASP.NET membenarkan anda menetapkan tema secara pemrograman. Seperti yang dinyatakan di atas, memuatkan dan memaut dengan templat reka bentuk berlaku semasa halaman sedang disediakan untuk permulaan. Oleh itu, jika anda perlu menukar templat reka bentuk halaman, anda mesti melakukan ini dalam pengendali acara PreInit.

Dilindungi void Page_PreInit(penghantar objek, EventArgs e) ( Page.MasterPageFile = "AnotherMaster.master"; )

Pemprosesan Templat ASP.NET

Kali pertama halaman diakses, ASP.NET mencari dan menyusun himpunan untuk semua templat dalam direktori. Operasi ini mengambil sedikit masa, bergantung pada bilangan halaman templat dalam direktori, tetapi dilakukan sekali sahaja. Oleh itu, jika terdapat templat yang tidak digunakan dalam direktori, ini tidak membawa kepada kehilangan prestasi semasa aplikasi sedang berjalan, satu-satunya kesulitan ialah masa tambahan dan penyusunan perhimpunan yang tidak perlu untuk halaman yang tidak digunakan.
Apabila mengakses fail aspx halaman dengan templat reka bentuk yang diberikan, proses penyusunan hampir tidak berbeza daripada proses penyusunan halaman biasa, kecuali kelas templat MasterPage dicipta, pautan yang tersedia dalam harta Page.Master.
Halaman itu kemudiannya melalui semua langkah yang diterangkan di atas dalam artikel ini, menyebabkan kod HTML dijana yang dihantar kepada klien. Dalam yang diterima pelayar HTML Kod tidak lagi boleh memberitahu bahagian mana kod yang ditakrifkan dalam templat reka bentuk dan bahagian mana kod yang ditakrifkan pada halaman itu sendiri, memandangkan ContentPlaceHolder dan kawalan Kandungan tidak mempunyai sebarang surat-menyurat HTML dan tidak menghasilkan teg tambahan selain daripada kandungan mereka.

Laman utama

  • Muka surat 1
  • Muka surat 2
  • muka surat 3

Masa: 20/03/2005

Memandangkan templat ialah subset halaman, ia dibenarkan untuk membuat templat bersarang dengan menentukan laluan ke templat lain untuk templat dalam arahan Induk menggunakan atribut MasterPageFile. Untuk melakukan ini, anda perlu menentukan kawalan ContentPlaceHolder dalam templat utama, dan dalam templat "kanak-kanak", bersama-sama dengan elemen ContentPlaceHolder, tentukan kawalan Kandungan untuk menggantikan kandungan elemen ContentPlaceHolder templat asas.

Penggunaan templat yang berbeza untuk pelayar yang berbeza

Mana-mana pembangun Web sedar bahawa pelayar yang berbeza (contohnya, Microsoft internet Explorer, Netscape Navigator, Mozilla FireFox, dll.) memproses kod HTML secara berbeza dan, yang paling penting, mempunyai model pengaturcaraan yang sedikit berbeza, yang merumitkan penciptaan skrip klien.
Untuk menyelesaikan masalah ini, terdapat dua kaedah utama yang digunakan dalam kedua-dua ASP.NET 1.x dan ASP klasik. Yang pertama ialah penyemak imbas pelanggan dihantar kod pelanggan yang, berdasarkan jenis dan versi pelayar, melakukan beberapa tindakan. Yang kedua ialah mengubah hala penyemak imbas pengguna ke halaman tersebut yang dioptimumkan khusus untuk penyemak imbas tertentu. ASP.NET memudahkan untuk mencipta jenis halaman ini kerana masa jalan menjana kod HTML untuk kawalan pelayan standard berdasarkan maklumat tentang penyemak imbas pelanggan. Apabila menggunakan templat reka bentuk, anda boleh mencipta beberapa templat untuk setiap penyemak imbas dan tentukan dalam arahan Halaman halaman yang templat untuk digunakan.

Senarai penyemak imbas dan sifat penyemak imbas yang digunakan oleh ASP.NET boleh didapati dalam direktori %WINDIT%\Microsoft.NET\Framework\version\CONFIG\Browsers.

Penyetempatan mudah aplikasi Web Menentukan tetapan serantau pengguna

Untuk menyetempatkan aplikasi dalam ASP.NET 1.x, pembangun selalunya terpaksa menulis kod untuk menentukan tetapan tempat pengguna. Kod ini selalunya diletakkan dalam global.asax dan tugasnya adalah untuk menetapkan bahasa pengguna sebagai bahasa proses semasa dengan mencipta objek CultureInfo dan menetapkan sifat CurrentCulture dan CurrentUICulturenya kepada objek CurrentThread:

Void Application_BeginRequest (Penghantar objek, EventArgs e) ( if (Request.UserLanguages.Length > 0) ( CultureInfo UserCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages); Thread.CurrentThread.CurrentCulture = UserCulture;Thread.Current )

Dalam ASP.NET 2.0, adalah mungkin untuk memunggah penentuan tempat pengguna ke persekitaran masa jalan. Ia cukup untuk menetapkan atribut Culture="auto" dan UICulture="auto" arahan @Page supaya tetapan serantau pengguna untuk halaman ditentukan secara automatik. Bila. jika anda perlu mencapai kesan ini pada semua halaman tapak, tambah sahaja baris seterusnya:

Ungkapan untuk penyetempatan

ASP.NET 2.0 membolehkan anda menjana himpunan dengan sumber tempatan untuk setiap halaman dan mengikat kawalan kepada data yang disimpan dalam sumber tersebut menggunakan ungkapan yang diletakkan terus dalam kod paparan dalam fail ASPX. Untuk melakukan ini, atribut meta:resourcekey digunakan, yang nilainya dianalisis semasa pelaksanaan halaman.

Pilih Bahasa

Atau ungkapan baharu boleh digunakan:

Untuk dapat menyetempatkan teks statik dengan cara yang sama, ASP.NET 2.0 diperkenalkan elemen baharu Setempatkan kawalan, yang membolehkan anda menggunakan ungkapan penyetempatan di atas.

Teks

Teks

Anda boleh membaca lebih lanjut tentang ungkapan, menjana sumber dan menentukan tetapan serantau pengguna dalam artikel ini.

Kesimpulan

Artikel ini hanya menyediakan beberapa maklumat asas tentang perkara baharu dalam ASP.NET 2.0 berbanding ASP.NET 1.x. Ciri-ciri ASP.NET telah diterangkan secara ringkas dan artikel ini boleh menjadi titik permulaan untuk mempelajari teknologi canggih ini. Untuk penerangan yang lebih terperinci tentang teknologi dan keupayaan baharu yang dinyatakan dalam artikel, adalah disyorkan untuk merujuk kepada senarai literatur tambahan. Artikel itu tidak menyentuh beberapa inovasi penting - pelaksanaan kod tak segerak, kawalan baharu, penyulitan serpihan fail web.config, mekanisme capaian data baharu dan banyak lagi. Semua ini adalah bahan yang boleh dikhaskan lebih daripada satu buku. Jika boleh, penulis akan cuba mengetengahkan inovasi ini dalam artikel akan datang.

Halaman pertama di ASP.NET menyediakan pengenalan awal kepada teknologi yang kukuh untuk mencipta aplikasi web. Tanpa merumitkan langkah pertama dengan rangka kerja WebForms, MVC, WebAPI, kami akan mencipta halaman web ringkas dengan kod program terbenam untuk dua pengendali paparan - ASPX dan Razor. Pemproses kod, juga dipanggil enjin atau enjin rendering, direka untuk penciptaan dinamik laman web dengan menggantikan kod program markup html yang sepadan.

Enjin ASPX ialah model standard untuk menambah kod pada halaman web ASP.NET. ASPX menggunakan runat="server"> jenis, prosedur dan blok pengisytiharan pembolehubah dan blok pemaparan penanda html terbina dalam. Model penambahan kod ASPX, dengan beberapa perubahan, telah dibawa ke ASP.NET daripada platform ASP asal.

Razor ialah mekanisme baharu untuk menggambarkan kod program dalam halaman html. Razor ialah enjin dinamik pintar mencipta html penandaan. Ia mempunyai sintaks yang jelas dan memudahkan untuk membenamkan kod ke dalam halaman web. Untuk membezakan kod program daripada kod html menggunakan simbol @, dalam kombinasi dengan pendakap kerinting dan tanpa kurungan.

Untuk membuat halaman web pertama kami akan menggunakan laman web percuma persekitaran perisian untuk bekerja dengan tapak web WebMatrix. Pada masa ini, versi ke-3 alat pengaturcaraan ini, mencukupi untuk mencipta tapak web profesional, telah dibuat. Anda boleh memuat turunnya dari laman web Microsoft melalui pautan WebMatrix. Program WebMatrix merangkumi semua yang anda perlukan untuk membuat dan menguji tapak web berdasarkan ASP.NET: editor kod dengan lampu latar dan IntelliSense, pelayan web IIS Express, sistem pengurusan pangkalan data data SQL LocalDB.

Tapak ini merangkumi tiga halaman: halaman utama dan dua halaman yang sama untuk membuat jadual secara dinamik menggunakan enjin ASPX dan Razor. Saiz jadual boleh ditentukan dalam baris pertanyaan menggunakan dua parameter. Ia mesti dikatakan bahawa, pada dasarnya, kedua-dua pengendali berkesan mencipta penanda html, tetapi memberikan keselesaan operasi yang berbeza.

Enjin ASPX memerlukan semua bahagian dan kepingan kod program disertakan dalam blok paparan. Jenis, prosedur dan pembolehubah boleh diisytiharkan dalam blok runat="server">.... Atribut runat="server" membezakan blok ini daripada blok javascript dan menandakan pemprosesan kod dalam blok ini terus pada pelayan.

Penyenaraian No. 1 Laman web menggunakan enjin ASPX

< !DOCTYPE html > < html xmlns ="http://www.w3.org/1999/xhtml"> < head runat ="server"> < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8"/> < title > < link rel ="stylesheet" type ="text/css" href ="/css/style.css" /> < body > < h1 > < p >< a href ="/">Untuk utama< p >Bilangan lajur -< br />Bilangan baris -< table > < tr > < tr > < td >

Di bawah ialah kod halaman web untuk pengendali kod terbenam Razor. Beri perhatian kepada penggabungan harmoni kod html dan ungkapan dalam C#. Enjin Razor membolehkan anda menggunakan tag HTML terus di dalam kod program: komponen pintar pengendali dengan bijak memisahkan penanda HTML daripada kod program C#.

Penyenaraian No. 2 Laman web pada enjin Razor

< !DOCTYPE html > < html lang ="ru"> < head > < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8"/> < meta charset ="utf-8" /> < title >@halaman nama< link rel ="stylesheet" type ="text/css" href ="/css/style.css" /> < body > < h1 >@halaman nama< p >< a href ="/">Laman Utama @ Html.Raw(createLinks.GetLinks())< p >Bilangan lajur - @numberColumns< br />Bilangan baris - @numberRows< table > < tr >@untuk (int i = 0; i< numberColumns; i++) { < th >Tajuk # @(i + 1 ) ) @ untuk (baris int = 0; baris< numberRows; row++) { < tr >@for(int col = 0; col< numberColumns; col++) { < td >@(baris+1 ) x@(col+1 ) ) )

Anda boleh menguji tapak dalam beberapa cara:

  • MS Visual Studio - Fail-> Buka tapak web -> Pilih folder di mana arkib telah dibongkar Lancarkan dalam penyemak imbas (atau kekunci F5)
  • WebMatrix - Buka->Folder->Pilih folder di mana arkib tapak dibongkar->Pilih Pelancaran folder
  • Buka bungkusan arkib ke folder fizikal tapak tempatan atau internet. Lancarkan tapak dalam penyemak imbas menggunakan URLnya.
  • Sebagai kesimpulan, kami boleh menambah bahawa untuk pengguna tapak, maklumat tentang enjin mana halaman web sedang berjalan tidak begitu penting. Tetapi pengaturcara, selepas bekerja dengan setiap pengendali kod terbenam, pasti akan memilih Razor.

    Kemas kini terakhir: 31/10/2015

    Halaman induk digunakan untuk mencipta rupa dan rasa yang konsisten dan bersatu pada tapak. Pada asasnya, halaman induk adalah paparan yang sama, tetapi membolehkan anda memasukkan paparan lain. Sebagai contoh, anda boleh menentukan elemen pada halaman induk yang biasa kepada semua paparan lain, dan juga termasuk gaya dan skrip biasa. Akibatnya, kita tidak perlu pada setiap masa pembentangan berasingan tentukan laluan ke fail gaya, dan kemudian ubahnya jika perlu. Dan ruang letak atau ruang letak yang digunakan pada halaman induk akan membolehkan anda memasukkan pandangan lain di tempat mereka.

    Secara lalai, apabila anda mencipta projek ASP.NET MVC 5 baharu, halaman induk yang dipanggil _Layout.chtml telah ditambahkan pada projek, yang boleh didapati dalam direktori Views/Shared. Dalam lampiran dari bab dua kami mengubahnya seperti berikut:

    @ViewBag.Title @RenderBody()

    Pada pandangan pertama, ini adalah paparan biasa dengan satu pengecualian: ia menggunakan kaedah @RenderBody(), yang merupakan pemegang tempat dan akan digantikan dengan paparan lain yang menggunakan halaman induk ini. Akibatnya, kami boleh menetapkan gaya yang konsisten untuk paparan aplikasi web dengan mudah.

    Untuk menggunakan halaman induk dalam paparan, kita perlu menentukan laluan ke halaman induk yang dikehendaki dalam bahagian Reka Letak. Sebagai contoh, dalam paparan Index.cshtml, anda boleh menentukan halaman induk seperti ini:

    Jika kami tidak menggunakan halaman induk, maka kami tentukan Layout = null; .

    Ia juga tidak perlu menggunakan halaman induk yang sama untuk semua penyerahan. Anda boleh menentukan beberapa halaman induk, contohnya, satu untuk forum, satu untuk blog, dsb., dan bergantung pada bahagian tapak, sambungkan halaman yang anda perlukan. Mereka ditambahkan pada projek dengan cara yang sama seperti pandangan biasa.

    Halaman induk boleh mempunyai berbilang bahagian di mana paparan boleh meletakkan kandungannya. Sebagai contoh, mari tambah bahagian pengaki pada halaman induk:

    @ViewBag.Title

    @RenderBody() @RenderSection("Footer")

    Sekarang apabila kita menjalankan paparan Indeks sebelumnya kita akan mendapat ralat kerana bahagian Footer tidak ditakrifkan. Secara lalai, paparan harus memaparkan kandungan untuk setiap bahagian halaman induk. Oleh itu, mari tambah bahagian pengaki ke bahagian bawah paparan Indeks. Kita boleh melakukan ini menggunakan ungkapan @section:

    @( Layout = "~/Views/Shared/_Layout.cshtml"; ) @section Footer ( Hak cipta terpelihara. Syte Corp. 2012. )

    Tetapi dengan pendekatan ini, jika kami mempunyai banyak pandangan, dan kami tiba-tiba ingin menentukan bahagian baharu pada halaman induk, kami perlu menukar semua pandangan sedia ada, yang tidak begitu mudah. Dalam kes ini, kita boleh menggunakan salah satu pilihan untuk konfigurasi bahagian fleksibel.

    Pilihan pertama ialah menggunakan lebihan kaedah RenderSection, yang membolehkan anda menunjukkan bahawa bahagian itu tidak perlu ditakrifkan dalam paparan. Untuk menandakan bahagian Footer sebagai pilihan, anda perlu menghantar nilai palsu kepada kaedah sebagai parameter kedua:

    @RenderSection("Footer", false)

    Pilihan kedua membolehkan anda menetapkan kandungan bahagian lalai jika bahagian ini tidak ditakrifkan dalam paparan:

    @if (IsSectionDefined("Footer")) (@RenderSection("Footer") ) else (Kandungan lalai bagi elemen footer. )

    ViewStart

    Jika kami mempunyai beberapa paparan dalam projek kami, kami boleh menukar huraian halaman induk secara manual untuk setiap satu dalam bahagian Reka Letak jika, sebagai contoh, kami memutuskan untuk menggunakan halaman induk yang berbeza. Tetapi jika kita mempunyai banyak pandangan, maka ini tidak akan menjadi sangat mudah.

    Untuk konfigurasi paparan yang lebih fleksibel, halaman _ViewStart.cshtml dimaksudkan. Kod untuk halaman ini dijalankan sebelum kod untuk mana-mana pandangan yang terletak dalam direktori yang sama. Fail ini digunakan secara berurutan pada setiap paparan yang terletak dalam direktori yang sama.

    Apabila anda mencipta projek ASP.NET MVC 5, fail _ViewStart.cshtml ditambahkan pada direktori Views secara lalai. Fail ini mentakrifkan halaman induk lalai:

    @( Layout = "~/Views/Shared/_Layout.cshtml"; )

    Kod ini dijalankan sebelum mana-mana kod lain yang ditakrifkan dalam paparan, jadi kami boleh mengalih keluar bahagian Reka Letak daripada paparan lain. Jika paparan harus menggunakan halaman induk yang berbeza, maka kami hanya mengatasi sifat Layout, menambah takrifnya pada permulaan paparan.

    Hello w3ii dalam HTML

    Kod ini menunjukkan contoh sebagai halaman HTML:




    Hello w3ii!


    firstpage.htm" dan juga buat pautan ke fail seperti ini: firstpage.htm

    Hello w3ii dalam ASP.NET

    Cara paling mudah untuk menukar halaman HTML kepada halaman ASP.NET adalah dengan menyalin fail HTML ke dalam fail baharu dengan sambungan .aspx.

    Kod ini menunjukkan contoh kami seperti dalam halaman ASP.NET:




    Hello w3ii!


    Jika anda ingin mencuba ini sendiri, simpan kod dalam fail yang dipanggil "firstpage.aspx" dan juga buat pautan ke fail seperti ini: firstpage.aspx

    Bagaimana ia berfungsi?

    Pada asasnya, halaman ASP.NET adalah sama dengan halaman HTML.

    Halaman HTML mempunyai sambungan .htm. Jika penyemak imbas meminta halaman HTML daripada pelayan, pelayan menghantar halaman tersebut ke penyemak imbas tanpa sebarang perubahan.

    Halaman ASP.NET mempunyai sambungan .aspx. Jika penyemak imbas meminta halaman ASP.NET, pelayan memproses sebarang kod boleh laku halaman, sebelum keputusan dihantar semula ke penyemak imbas.

    Halaman ASP.NET di atas tidak mengandungi sebarang kod boleh laku, jadi tiada apa yang dilaksanakan. Dalam contoh berikut, kami akan menambah kod halaman boleh laku untuk menunjukkan perbezaan antara halaman HTML statik dan halaman ASP dinamik.

    ASP klasik

    Halaman Pelayan Aktif (ASP) telah wujud selama beberapa tahun. Dengan ASP, kod boleh laku boleh diletakkan di dalam halaman HTML.

    Versi ASP sebelumnya (sebelum ASP .NET) sering dipanggil ASP klasik.

    ASP.NET tidak serasi sepenuhnya dengan ASP Klasik, tetapi kebanyakan halaman ASP Klasik akan berfungsi dengan baik sebagai halaman ASP.NET dengan hanya perubahan kecil.

    Jika anda ingin mengetahui lebih lanjut tentang ASP klasik, sila lawati Tutorial ASP kami.

    Halaman dinamik dalam ASP klasik

    Untuk menunjukkan cara ASP boleh memaparkan halaman dengan kandungan dinamik, kami menambahkan beberapa kod boleh laku (berwarna merah) dalam contoh sebelumnya:




    Hello w3ii!




    Kod di dalam teg dilaksanakan pada pelayan.

    Response.Write ialah kod ASP untuk menulis sesuatu ke aliran keluaran HTML.

    Now() ialah fungsi pulangan pelayan tarikh semasa dan masa.

    Jika anda ingin mencuba ini sendiri, simpan kod dalam fail yang dipanggil "dynpage.asp" dan juga buat pautan ke fail seperti ini: dynpage.asp

    Halaman Dinamik dalam ASP .NET

    Kod ini menjadikan contoh kami seperti dalam halaman ASP.NET:




    Hello w3ii!




    Jika anda ingin mencuba ini sendiri, simpan kod dalam fail yang dipanggil "dynpage.aspx" dan juga buat pautan ke fail seperti ini: dynpage.aspx

    ASP.NET vs ASP klasik

    Contoh sebelumnya tidak menunjukkan sebarang perbezaan antara ASP.NET dan ASP klasik.

    Seperti yang anda lihat daripada dua contoh terakhir, tiada perbezaan antara kedua-dua halaman ASP dan ASP.NET ini.

    Dalam bab berikut, anda akan melihat cara untuk menjadikan kawalan pelayan ASP.NET lebih berkuasa daripada ASP klasik.