Menambah kelas model. Reka Bentuk Model Data

Dalam bab ini yang lain, kita akan melihat beberapa ciri asas MVC dengan mencipta aplikasi kemasukan data yang mudah. Kami akan mempercepatkan sedikit perkara dalam bahagian ini. Matlamat kami adalah untuk menunjukkan MVC dalam tindakan, jadi kami akan meninggalkan beberapa penjelasan tentang cara semuanya berfungsi. Tetapi jangan risau, kami akan membincangkan topik ini secara terperinci dalam bab yang akan datang.

Mari kita lakarkan rancangan

Bayangkan seorang rakan telah memutuskan untuk menganjurkan parti Malam Tahun Baru dan dia telah meminta kami membuat tapak web yang membolehkan rakan dan kenalannya menerima jemputan RSVP (tanda tangan pada jemputan yang menjemput penerima untuk RSVP untuk hadir acara). Tapak hendaklah mengandungi perkara berikut:

  • Halaman utama tempat maklumat parti dipaparkan
  • Borang yang boleh digunakan untuk RSVP
  • Mengesahkan borang RSVP yang akan memaparkan halaman terima kasih
  • Menyelesaikan dan menghantar jawapan kepada persetujuan untuk menyertai parti

Dalam bahagian berikut, kami akan membina projek MVC yang kami buat pada permulaan bab dan menambah keupayaan ini. Kita boleh melakukan item pertama dari senarai dengan menggunakan pengetahuan yang kita terima sebelum ini, iaitu, kita boleh menambah HTML pada paparan sedia ada kita, di mana ia akan diberikan maklumat terperinci tentang parti itu. B menunjukkan penambahan yang kami buat pada fail Views/Home/Index.cshtml.

Penyenaraian 2-7: Memaparkan maklumat parti
@( Susun atur = null; ) Indeks

Kami akan mengadakan parti yang menarik.
(Untuk dilakukan: menjualnya dengan lebih baik. Tambah gambar atau sesuatu.)



Kami berada di landasan yang betul. Jika anda melancarkan apl itu, anda akan melihat maklumat tentang parti, atau sebaliknya pemegang tempat untuk maklumat itu, tetapi anda mendapat idea itu. Satu contoh ditunjukkan dalam.

Rajah 2-12: Menambah Pandangan

Reka Bentuk Model Data

Dalam MVC M bermaksud model, dan ini adalah bahagian paling penting dalam aplikasi. Model ialah perwakilan objek sebenar, proses dan peraturan yang mentakrifkan objek, dikenali sebagai domain, permohonan kami. Model yang sering disebut sebagai model domain, mengandungi objek C# (dikenali sebagai objek domain) yang membentuk teras aplikasi kami, dan kaedah yang membolehkan kami memanipulasinya. Paparan dan pengawal mendedahkan domain kepada pelanggan dengan cara yang konsisten, dan aplikasi MVC yang direka bentuk dengan baik bermula dengan model yang direka dengan baik, yang kemudiannya berfungsi sebagai titik fokus semasa kami menambah pengawal dan pandangan.

Kami tidak memerlukan model yang kompleks untuk aplikasi PartyInvites, tetapi kami akan mencipta satu kelas domain yang akan kami panggil GuestResponse. Entiti ini akan bertanggungjawab untuk menyimpan, mengesahkan dan mengesahkan RSVP.

Menambah Kelas Model

Mengikut konvensyen MVC, kelas yang membentuk model diletakkan dalam folder Model. klik Klik kanan tetikus ke atas Model dalam tetingkap Penyelesaian Explorer dan pilih Tambah diikuti oleh Kelas daripada menu timbul. Namakan fail GuestResponse.cs dan klik butang Tambah untuk mencipta kelas. Tukar kandungan kelas mengikut.

Nasihat

Jika anda tidak mempunyai item menu Kelas, maka anda mungkin membiarkan penyahpepijat berjalan. Studio Visual. Visual Studio mengehadkan perubahan yang boleh anda buat pada projek semasa aplikasi sedang berjalan.

Penyenaraian 2-8: Kelas domain GuestResponse
ruang nama PartyInvites.Models ( public class GuestResponse ( public string Name ( get; set; ) public string E-mel ( get; set; ) public string Phone ( get; set; ) public bool? WillAttend ( get; set; ) ) )

Nasihat

Anda mungkin perasan bahawa sifat WillAttend adalah jenis bool? (Boleh dibatalkan ), iaitu, ia boleh menjadi benar, palsu atau batal. Kami akan menerangkan perkara ini dalam bahagian "Menambah Pengesahan" kemudian dalam bab ini.

Rujukan kaedah tindakan

Salah satu tujuan permohonan kami adalah untuk memasukkan borang RSVP, jadi kami perlu menambah pautan kepadanya daripada paparan Index.cshtml kami, seperti yang ditunjukkan dalam .

Penyenaraian 2-9: Menambah pautan untuk borang RSVP
@( Susun atur = null; ) Indeks
@ViewBag.Greeting World (dari pandangan)

Kami akan mengadakan parti yang menarik.
(Untuk dilakukan: menjualnya dengan lebih baik. Tambah gambar atau sesuatu.)

@Html.ActionLink("RSVP Now", "RsvpForm")


Html.ActionLink ialah kaedah bantu HTML. Rangka Kerja MVC direka bentuk dengan satu set kaedah pembantu terbina dalam yang sesuai untuknya Pemprosesan HTML pautan, input teks, kotak semak, pilihan, dan juga kawalan pengguna. Kaedah ActionLink mengambil dua parameter: yang pertama ialah teks untuk dipaparkan dalam pautan, dan yang kedua ialah tindakan yang perlu dilakukan apabila pengguna mengklik pada pautan. Kami akan menerangkan bantuan kaedah HTML dalam bab 19-21. Ditunjukkan adalah pautan yang kami tambahkan.

Rajah 2-13: Tambahkan pautan pada paparan

Jika anda menuding pada pautan dalam penyemak imbas anda, anda akan melihat bahawa pautan itu menghala ke http://yourserver/Home/RsvpForm. Kaedah Html.ActionLink menyemak konfigurasi URL aplikasi kami dan menentukan bahawa /Home/RsvpForm ialah URL untuk tindakan RsvpForm HomeController. Ambil perhatian bahawa tidak seperti aplikasi ASP.NET tradisional, URL MVC tidak sepadan dengan fail fizikal. Setiap kaedah tindakan mempunyai URLnya sendiri dan MVC menggunakan sistem penghalaan ASP.NET untuk menterjemahkan URL ini kepada tindakan.

Mencipta Kaedah Tindakan

Jika anda mengklik pada pautan anda akan melihat ralat 404 Tidak ditemui. Ini kerana kami belum lagi mencipta kaedah tindakan yang sepadan dengan URL /Home/RsvpForm. Kami akan melakukan ini dengan menambahkan kaedah RsvpForm pada kelas HomeController kami, seperti yang ditunjukkan dalam .

Penyenaraian 2-10: Menambah kaedah tindakan baharu pada pengawal
menggunakan Sistem; menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan System.Web; menggunakan System.Web.Mvc; ruang nama PartyInvites.Controllers ( public class HomeController: Controller ( public ViewResult Index() ( int hour = DateTime.Now.Jam; ViewBag.Greeting = jam< 12 ? "Good Morning" : "Good Afternoon"; return View(); } awam ViewResult RsvpForm() { return View(); } } }

Menambah Paparan yang Ditaip dengan Kuat

Kami ingin menambah pandangan pada kaedah tindakan RsvpForm kami, tetapi kami akan melakukan sesuatu yang lebih: iaitu, mencipta ditaip dengan kuat prestasi. Paparan yang ditaip kuat direka untuk mengendalikan jenis domain tertentu. Jika kami menentukan jenis yang kami ingin bekerjasama (GuestResponse dalam contoh ini), MVC menyediakan ciri tambahan untuk memudahkan kami.

Perhatian

Pastikan projek MVC anda disusun sebelum memulakan. Jika anda membuat kelas GuestResponse tetapi tidak menyusunnya, MVC tidak akan dapat mencipta paparan yang ditaip kuat untuk jenis ini. Untuk menyusun aplikasi, pilih Build Solution daripada menu Visual Studio Build.

Klik kanan di dalam kaedah tindakan RsvpForm dan pilih Tambah Paparan daripada menu pop timbul untuk membuat paparan. Dalam dialog Tambah Paparan, tandai kotak semak Cipta paparan yang ditaip kuat dan pilih pilihan GuestResponse daripada menu lungsur turun. Nyahtanda Gunakan reka letak atau halaman induk dan pastikan Razor dipilih sebagai enjin persembahan dan pilihan templat Perancah ditetapkan kepada Kosong seperti yang ditunjukkan dalam .

Rajah 2-14: Menambah Paparan yang Ditaip dengan Kuat

Klik butang Tambah dan Visual Studio akan mencipta fail baharu bernama RvspForm.cshtml dan bukanya untuk diedit. Anda boleh melihat kandungan asal di. Seperti yang anda perhatikan, ini berbeza fail HTML, tetapi ia mengandungi ungkapan Razor @model. Anda akan melihat sebentar lagi bahawa ini adalah kunci kepada paparan yang ditaip dengan kuat dan keupayaan yang ditawarkannya.

Penyenaraian 2-12: Kandungan awal fail RsvpForm.cshtml
@model PartyInvites.Models.GuestResponse@( Susun atur = null; ) RsvpForm


Membina borang

Memandangkan kami telah mencipta paparan yang ditaip dengan kuat, kami boleh membina kandungan RsvpForm.cshtml untuk mengubahnya menjadi bentuk HTML untuk mengedit objek GuestResponse. Tukar pandangan supaya sepadan.

Penyenaraian 2-13: Membuat Penyerahan Borang
RsvpForm @menggunakan(Html.BeginForm()) {

Nama anda: @Html.TextBoxFor(x => x.Name)

E-mel anda: @Html.TextBoxFor(x => x.Email)

Telefon anda: @Html.TextBoxFor(x => x.Phone)

Adakah anda akan hadir? @Html.DropDownListFor(x => x.WillAttend, baru ( SelectListItem() baharu (Teks = "Ya, saya" akan berada di sana", Nilai = bool.TrueString), SelectListItem() baharu (Teks = "Tidak, saya tidak boleh datang", Nilai = bool.FalseString) ), "Memilih pilihan")

}

Untuk setiap sifat kelas model GuestResponse, kami menggunakan kaedah pembantu HTML untuk memberikan kawalan input HTML yang sesuai. Kaedah ini membolehkan anda memilih sifat yang dimiliki oleh elemen input menggunakan ungkapan lambda, seperti ini:

@Html.TextBoxFor(x => x.Phone)

Kaedah pembantu HTML TextBoxFor menjana HTML untuk elemen input, menetapkan parameter jenis kepada teks dan menetapkan atribut id dan nama kepada Telefon , nama sifat kelas domain yang dipilih, seperti ini:

Ciri berguna ini berfungsi kerana paparan RsvpForm kami ditaip dengan kuat dan kami telah memberitahu MVC bahawa GuestResponse ialah jenis yang kami mahu paparan itu dikendalikan, jadi pembantu HTML boleh mengetahui jenis data yang ingin kami baca menggunakan ungkapan @model .

Jangan risau jika anda tidak biasa dengan ungkapan lambda C#. Kami akan membincangkannya dalam Bab 4, tetapi sebagai alternatif kepada ungkapan lambda, anda boleh merujuk kepada nama sifat jenis model sebagai rentetan, seperti ini:

@Html.TextBox("E-mel")

Kami mendapati bahawa teknik ekspresi lambda membantu kami mengelakkan kesilapan dalam nama sifat jenis model kerana Visual Studio IntelliSense muncul dan membolehkan kami memilih sifat secara automatik, seperti yang ditunjukkan dalam .

Rajah 2-15: Visual Studio IntelliSense untuk ungkapan lambda dalam pembantu HTML

Kaedah pembantu berguna lain ialah Html.BeginForm, yang menjana elemen borang HTML yang dikonfigurasikan untuk menghantar data kembali kepada kaedah tindakan. Memandangkan kami tidak menghantar sebarang parameter kepada kaedah pembantu, ia mengandaikan bahawa kami mahu mengembalikan URL yang sama. Helah yang kemas ialah membungkusnya dalam C# menggunakan pernyataan, seperti ini:

Biasanya, apabila digunakan dengan cara ini, pernyataan penggunaan memastikan bahawa objek dilupuskan apabila ia keluar dari skop. Ia digunakan secara meluas untuk menyambung ke pangkalan data, contohnya untuk memastikan ia ditutup sebaik sahaja pertanyaan selesai. (Aplikasi ini kata kunci penggunaan adalah berbeza kerana ia melibatkan skop kelas).

Daripada memadamkan objek, pembantu HtmlBeginForm menutup elemen borang HTML apabila ia keluar dari skop. Ini bermakna kaedah pembantu Html.BeginForm mencipta kedua-dua bahagian elemen borang, seperti ini:

Jangan risau jika anda tidak biasa memadamkan objek dalam C#. Matlamat kami buat masa ini ialah untuk menunjukkan cara membuat borang menggunakan kaedah pembantu HTML. Anda boleh melihat borang dalam paparan RsvpForm apabila anda melancarkan aplikasi dan klik pautan RSVP Now. Hasilnya ditunjukkan.

Rajah 2-16: paparan RspvForm

Catatan

Ini bukan buku tentang CSS atau reka bentuk web. Untuk sebahagian besar, kami akan mencipta contoh yang penampilannya boleh digambarkan sebagai ketinggalan zaman (walaupun kami lebih suka istilah klasik, di mana dia berasa kurang diabaikan). Paparan MVC menjana HTML yang sangat bersih dan mudah, dan anda mempunyai kawalan penuh ke atas reka letak elemen dan kelas yang dimilikinya, jadi anda tidak akan menghadapi sebarang masalah menggunakan alatan reka bentuk atau templat siap sedia untuk menjadikan projek MVC anda kelihatan cantik.

Pemprosesan Borang

Kami belum memberitahu MVC apa yang kami mahu lakukan apabila borang diserahkan kepada pelayan. Buat masa ini, mengklik butang Hantar RSVP hanya mengalih keluar sebarang nilai yang anda masukkan ke dalam borang. Ini kerana borang dihantar semula ke kaedah tindakan RsvpForm dalam pengawal Rumah, yang hanya memberitahu MVC untuk memproses paparan semula.

Catatan

Anda mungkin terkejut dengan fakta bahawa input hilang apabila paparan diproses semula. Jika ya, maka anda mungkin telah membangunkan aplikasi menggunakan Borang Web ASP.NET, yang secara automatik menyimpan data dalam situasi ini. Kami akan menunjukkan kepada anda cara untuk mencapai hasil yang sama dengan MVC tidak lama lagi.

Untuk menerima dan memproses data borang yang diserahkan, kami akan melakukan sesuatu yang bijak dan keren. Kami akan menambah kaedah tindakan RsvpForm kedua untuk mencipta yang berikut:

  • Kaedah yang bertindak balas kepada permintaan HTTP GET: Permintaan GET ialah perkara yang ditangani oleh penyemak imbas selepas setiap klik pautan. Pilihan ini akan bertanggungjawab untuk memaparkan borang kosong awal pada kali pertama seseorang melawat /Home/RsvpForm .
  • Kaedah yang bertindak balas kepada permintaan HTTP POST: Secara lalai, borang yang diproses menggunakan Html.BeginForm() dihantar sebagai permintaan POST oleh penyemak imbas. Pilihan ini akan bertanggungjawab untuk menerima data yang diserahkan dan memutuskan perkara yang perlu dilakukan dengannya.

Mengendalikan permintaan GET dan POST dalam kaedah C# yang berasingan membantu memastikan kod kami kemas, kerana kedua-dua kaedah mempunyai tanggungjawab yang berbeza. Kedua-dua kaedah tindakan dipanggil oleh URL yang sama, tetapi MVC memastikan bahawa kaedah yang sesuai dipanggil bergantung pada sama ada kita berurusan dengan permintaan GET atau POST. B menunjukkan perubahan yang perlu kita buat pada kelas HomeController.

Penyenaraian 2-14: Menambah kaedah tindakan untuk menyokong permintaan POST
menggunakan Sistem; menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan System.Web; menggunakan System.Web.Mvc; menggunakan PartyInvites.Models; ruang nama PartyInvites.Controllers ( public class HomeController: Controller ( public ViewResult Index() ( int hour = DateTime.Now.Jam; ViewBag.Greeting = jam< 12 ? "Good Morning" : "Good Afternoon"; return View(); } public ViewResult RsvpForm() ( return View(); ) public ViewResult RsvpForm(GuestResponse guestResponse) { // TODO: E-mel balasan kepada penganjur parti return View("Terima kasih", guestResponse); } } }

Kami telah menambahkan atribut HttpGet pada kaedah tindakan RsvpForm kami yang sedia ada. Ini memberitahu MVC bahawa kaedah ini hanya boleh digunakan untuk permintaan GET. Kami kemudian menambahkan lebihan RsvpForm yang mengambil parameter GuestResponse dan menggunakan atribut HttpPost. Atribut memberitahu MVC itu kaedah baru akan berurusan dengan permintaan POST. Ambil perhatian bahawa kami juga mengimport ruang nama PartyInvites.Models - dengan cara ini kami boleh merujuk kepada jenis model GuestResponse tanpa perlu menyatakan nama kelas. Kami akan membincangkan cara alat tambah penyenaraian kami berfungsi dalam bahagian berikut.

Menggunakan Model Data Binding

Varian pertama bagi kaedah tindakan RsvpForm yang berlebihan mengendalikan paparan yang sama seperti sebelumnya. Ia menjana borang yang ditunjukkan dalam . Pilihan kaedah terlampau beban kedua adalah lebih menarik kerana parameter, tetapi memandangkan kaedah tindakan akan dipanggil sebagai tindak balas kepada permintaan HTTP POST, dan GuestResponse ialah jenis kelas C#, bagaimanakah kaedah tersebut digabungkan?

Jawapannya ialah pengikatan data model– Fungsi MVC yang sangat berguna di mana data input dihuraikan dan pasangan kunci/nilai dalam permintaan HTTP digunakan untuk mengisi sifat jenis model domain. Proses ini adalah bertentangan dengan menggunakan pembantu HTML; Ini adalah apabila, apabila mencipta data borang untuk dihantar kepada pelanggan, kami menghasilkan elemen input HTML, di mana nilai atribut id dan nama diperoleh daripada nama sifat kelas model.

Sebaliknya, dengan pengikatan data model, nama elemen input digunakan untuk menentukan nilai harta dalam contoh kelas model, yang kemudiannya dihantar kepada kaedah tindakan didayakan POST kami.

Model perwakilan data ialah ciri yang berkuasa dan boleh disesuaikan yang menghilangkan kerumitan bekerja secara langsung dengan permintaan HTTP dan membolehkan kami bekerja dengan objek C# dan bukannya berurusan dengan nilai Request.Form dan Request.QueryString. Objek GuestResponse yang dihantar sebagai parameter kepada kaedah tindakan kami diisi secara automatik dengan data daripada medan borang. Kami akan melihat model perwakilan data secara terperinci, termasuk cara ia boleh disesuaikan, dalam Bab 22.

Mengendalikan Pandangan Lain

Varian kedua bagi kaedah tindakan RsvpForm yang berlebihan juga menunjukkan cara kami boleh memberitahu MVC untuk memproses paparan tertentu, bukannya paparan lalai, sebagai tindak balas kepada permintaan. Berikut adalah ungkapan yang sepadan:

return View("Terima kasih", guestResponse);

Panggilan kepada kaedah View ini memberitahu MVC untuk mencari dan memproses paparan, yang dipanggil Thanks , dan menghantar objek GuestResponse kami ke paparan. Untuk mencipta paparan yang kami tentukan, klik kanan di dalam salah satu kaedah HomeController dan pilih Tambah Paparan daripada menu timbul. Tetapkan nama paparan kepada Terima kasih seperti yang ditunjukkan dalam .

Rajah 2-17: Menambah Pandangan Terima Kasih

Kami akan mencipta satu lagi paparan yang ditaip kuat, jadi tandai kotak itu dalam kotak dialog Tambah Paparan. Kelas data yang kami pilih untuk paparan ini mesti sepadan dengan kelas yang kami luluskan kepada paparan menggunakan kaedah Lihat. Jadi pastikan GuestResponse dipilih dalam menu lungsur turun. Pastikan Gunakan reka letak atau halaman induk dinyahtandai, Lihat enjin ditetapkan kepada Razor dan templat Perancah ditetapkan kepada Kosong.

Klik butang Tambah untuk membuat paparan baharu. Memandangkan paparan dikaitkan dengan pengawal Rumah, MVC akan mencipta paparan sebagai ~/Views/Home/Thanks.cshtml . Tukar paparan baharu supaya dipadankan: Kami telah menyerlahkan perkara yang perlu ditambah.

Penyenaraian 2-15: Lihat Terima kasih
@model PartyInvites.Models.GuestResponse @( Layout = null; ) Terima kasih

Terima kasih, @Model.Name!

@jika (Model.WillAttend == benar) { @:Senang sekali anda datang. Minuman sudah ada di dalam peti sejuk! } lain { @:Maaf mendengar bahawa anda tidak dapat hadir, tetapi terima kasih kerana memberitahu kami. }


Paparan Terima kasih menggunakan Razor untuk memaparkan kandungan berdasarkan nilai sifat GuestResponse yang kami hantar kepada kaedah Lihat dalam kaedah tindakan RsvpForm. Pengendali Razor @model menentukan jenis model domain yang dikaitkan dengan paparan. Untuk mengakses nilai harta objek domain, kami menggunakan Model. PropertyName. Sebagai contoh, untuk mendapatkan nilai sifat Nama, kami memanggil Model.Name. Jangan risau jika anda tidak memahami sintaks Razor, kami akan menerangkannya secara terperinci dalam Bab 5.

Memandangkan kami telah mencipta paparan Terima kasih, kami mempunyai contoh kerja asas pemprosesan borang menggunakan MVC.

Lancarkan aplikasi dalam Visual Studio, klik pada pautan RSVP Now, tambah data pada borang dan klik pada butang Hantar RSVP. Anda akan melihat hasil yang ditunjukkan dalam (walaupun ia mungkin berbeza jika nama anda bukan Joe dan anda berkata anda tidak akan dapat hadir).

Rajah 2-18: Paparan diproses Terima kasih

Menambah Pengesahan

Kini kami bersedia untuk menambah pengesahan pada permohonan kami. Jika kami tidak melakukan ini, pengguna kami boleh memasukkan data tidak bermakna atau menyerahkan borang kosong.

Dalam aplikasi MVC, pengesahan biasanya digunakan pada model domain dan bukannya antara muka pengguna. Ini bermakna kami mentakrifkan kriteria pengesahan kami di satu tempat, dan kriteria tersebut berkuat kuasa di mana-mana sahaja dalam kelas model yang digunakan. ASP.NET MVC menyokong peraturan pengesahan yang ditakrifkan oleh atribut dalam ruang nama System.ComponentModel.DataAnnotations. Ia menunjukkan cara atribut ini boleh digunakan pada kelas model GuestResponse.

Penyenaraian 2-16: Memohon pengesahan pada kelas model GuestResponse
menggunakan System.ComponentModel.DataAnnotations; ruang nama PartyInvites.Models ( kelas awam GuestResponse ( rentetan awam Nama ( dapatkan; set; ) rentetan awam E-mel ( dapatkan; set; ) rentetan awam Telefon ( dapatkan; set; ) bool awam? Akan Hadir(dapat; set; ) ) )

Peraturan pengesahan ditunjukkan dalam huruf tebal. MVC secara automatik menemui atribut dan menggunakannya untuk mengesahkan data semasa pembentangan model data. Harap maklum bahawa kami mengimport ruang nama yang mengandungi peraturan pengesahan, jadi kami boleh merujuknya tanpa perlu menyatakan nama mereka.

Nasihat

Seperti yang dinyatakan sebelum ini, kami menggunakan jenis bool? untuk sifat WillAttend, jadi kami dapat menggunakan atribut pengesahan Diperlukan. Jika kami menggunakan bool biasa , nilai yang kami dapat terima kasih kepada model data hanya boleh benar atau palsu dan kami tidak akan dapat memberitahu sama ada pengguna memilih nilai tersebut. Taip bool? mempunyai tiga nilai yang mungkin: benar, salah dan nol. nilai nol akan digunakan jika pengguna belum memilih nilai, dan ini menyebabkan atribut Diperlukan melaporkan ralat pengesahan.

Kami boleh menyemak sama ada terdapat ralat pengesahan dengan menggunakan sifat ModelState.IsValid dalam kelas pengawal kami. Ini menunjukkan cara ini boleh dilakukan dalam kaedah tindakan RsvpForm kami dengan sokongan POST.

Penyenaraian 2-17: Menyemak ralat semasa pengesahan borang
public ViewResult RsvpForm(GuestResponse guestResponse) ( jika (ModelState.IsValid) { // TODO: Respons e-mel kepada penganjur parti kembali View("Terima kasih", guestResponse); } lain { // terdapat ralat pengesahan return View(); } }

Jika tiada ralat pengesahan, kami memberitahu MVC untuk memproses paparan Terima kasih seperti yang kami lakukan sebelum ini. Jika terdapat ralat pengesahan, kami memproses paparan RsvpForm sekali lagi dengan memanggil kaedah Lihat tanpa parameter.

Hanya memaparkan borang apabila terdapat ralat tidak begitu membantu, kami perlu memberi pengguna beberapa maklumat tentang masalahnya dan mengapa kami tidak boleh menerima borangnya. Kami melakukan ini menggunakan kaedah pembantu Html.ValidationSummary pada paparan RsvpForm, seperti yang ditunjukkan dalam .

Penyenaraian 2-18: Menggunakan Kaedah Html.ValidationSummary Helper
@model PartyInvites.Models.GuestResponse @( Layout = null; ) RsvpForm @menggunakan(Html.BeginForm()) ( @Html.ValidationSummary()

Nama anda: @Html.TextBoxFor(x => x.Name)

E-mel anda: @Html.TextBoxFor(x => x.Email)

Telefon anda: @Html.TextBoxFor(x => x.Phone)

Adakah anda akan hadir? @Html.DropDownListFor(x =>

}

Jika tiada ralat, kaedah Html.ValidationSummary mencipta item senarai tersembunyi sebagai pemegang tempat pada borang. MVC menjadikan pemegang tempat kelihatan dan menambah mesej ralat yang ditakrifkan oleh atribut pengesahan. Anda boleh melihat rupanya di .

Rajah 2-19: Ringkasan Keputusan Pengesahan

Pengguna tidak akan ditunjukkan paparan Terima kasih sehingga semua peraturan pengesahan yang kami gunakan pada kelas GuestResponse dipenuhi. Ambil perhatian bahawa data yang dimasukkan ke dalam borang telah disimpan dan dipaparkan semula apabila paparan ditunjukkan dengan ringkasan pengesahan. Ini adalah satu lagi faedah pemautan data.

Catatan

Jika anda telah bekerja dengan Borang Web ASP.NET, anda tahu bahawa Borang Web mempunyai konsep "kawalan pelayan" yang menyimpan keadaan dengan menyerikan nilai ke dalam medan borang tersembunyi, __VIEWSTATE . Pengikatan data ASP.NET MVC tidak terikat dengan konsep Borang Web elemen pelayan kawalan, pemulangan data atau Lihat Keadaan. ASP.NET MVC tidak memperkenalkan medan __VIEWSTATE tersembunyi ke dalam halaman HTML yang diberikan.

Menyerlahkan medan tidak sah

Kaedah pembantu HTML yang mencipta medan teks, senarai lungsur turun dan elemen lain mempunyai ciri yang sangat berguna yang boleh digunakan bersama dengan pengikatan data. Mekanisme yang sama yang menyimpan input pengguna ke dalam borang juga boleh digunakan untuk menyerlahkan medan individu yang gagal pengesahan.

Jika sifat kelas model tidak disahkan, kaedah pembantu HTML akan menghasilkan HTML yang sedikit berbeza. Sebagai contoh, berikut ialah HTML yang menjana panggilan ke Html.TextBoxFor (x => x.Name) apabila tiada ralat pengesahan:

Dan berikut ialah HTML yang menjana panggilan yang sama apabila pengguna tidak memberikan nilai (iaitu ralat pengesahan kerana kami menggunakan atribut Diperlukan bagi sifat Name dalam kelas model GuestResponse):

class="input-validation-error" data-val="true" data-val-required="Sila masukkan nama anda" id="Name" name="Nama" type="text" value="" />

Kami telah menyerlahkan perbezaannya. Kaedah pembantu ini telah menambah kelas yang dipanggil input-validation-error . Kita boleh memanfaatkan ciri ini dengan membuat jadual gaya CSS, yang mengandungi gaya untuk kelas ini dan lain-lain yang menggunakan pelbagai kaedah pembantu HTML.

Konvensyen dalam projek MVC ialah kandungan statik, seperti helaian gaya CSS, diletakkan dalam folder yang dipanggil Kandungan. Kami mencipta folder Kandungan dengan mengklik kanan pada projek PartyInvites dalam Penjelajah Penyelesaian dan memilih Tambah Folder Baharu daripada menu timbul. Kami mencipta helaian gaya dengan mengklik kanan folder Kandungan, memilih Tambah Item Baharu, dan kemudian memilih Helaian Gaya dalam kotak dialog Tambah Item Baharu. Kami menamakan helaian gaya kami Site.css, iaitu nama yang digunakan oleh Visual Studio semasa membuat projek menggunakan templat MVC selain daripada Empty. Anda boleh melihat kandungan fail Content/Site.css.

Penyenaraian 2-19: Kandungan fail Content/Site.css
.field-validation-error (warna: #f00;) .field-validation-valid ( display: none;).input-validation-error ( border: 1px solid #f00; background-color: #fee; ) .validation- ringkasan-ralat (font-berat: tebal; warna: #f00;). pengesahan-ringkasan-sah ( paparan: tiada;)

Untuk menggunakan helaian gaya ini, kami menambah pautan baharu ke bahagian kepala paparan RsvpForm, seperti yang ditunjukkan dalam . Anda menambah elemen pautan pada paparan seperti yang anda lakukan dalam fail HTML statik biasa.

Penyenaraian 2-20: Menambah elemen pautan pada paparan RsvpForm
@model PartyInvites.Models.GuestResponse @( Layout = null; ) RsvpForm @menggunakan (Html.BeginForm()) ( @Html.ValidationSummary()

Nama anda: @Html.TextBoxFor(x => x.Name)

E-mel anda: @Html.TextBoxFor(x => x.Email)

Telefon anda: @Html.TextBoxFor(x => x.Phone)

Adakah anda akan hadir? @Html.DropDownListFor(x => x.WillAttend, new ( SelectListItem() baharu (Teks = "Ya, saya" akan berada di sana", Value = bool.TrueString), SelectListItem() baharu (Teks = "Tidak, saya boleh "t come", Nilai = bool.FalseString) ), "Pilih pilihan")

}

Nasihat

Jika anda menggunakan MVC 3, anda mungkin mengharapkan kami menambah fail CSS pada paparan dengan menentukan atribut href sebagai @Href("~/Content/Site.css") atau @Url.Content("~/Content/Site .css" ) . Dengan MVC 4, Razor secara automatik mengesan atribut yang bermula dengan ~/ dan secara automatik memasukkan @Href atau @Url untuk anda.

Ralat pengesahan yang lebih jelas secara visual kini akan dipaparkan jika data yang menyebabkan ralat itu dibentangkan, seperti yang ditunjukkan dalam .

Rajah 2-20: Ralat pengesahan yang diserlahkan secara automatik

Mari lengkapkan contoh

Keperluan terakhir untuk contoh permohonan kami ialah menghantar e-mel dengan RSVP yang lengkap kepada rakan kami, penganjur parti. Kita boleh melakukan ini dengan menambahkan kaedah tindakan untuk mencipta dan menghantar mesej e-mel menggunakan kelas e-mel .NET Framework. Kami akan menggunakan kaedah pembantu WebMail sebaliknya. Ini di luar skop MVC, tetapi ini akan membolehkan kami melengkapkan contoh ini tanpa terperangkap dalam butiran membuat penghantar e-mel lain.

Catatan

Kami menggunakan kaedah pembantu WebMail kerana ia membolehkan kami menunjukkan penghantaran mesej e-mel dengan usaha yang minimum. Walau bagaimanapun, dalam keadaan biasa, kami lebih suka memunggah fungsi ini kepada kaedah tindakan. Kami akan menerangkan mengapa apabila kami menerangkan seni bina Corak MVC dalam bab 3.

Kami mahu e-mel dihantar apabila kami memproses paparan Terima kasih. B menunjukkan perubahan yang perlu kita lakukan.

Penyenaraian 2-21: Menggunakan Kaedah Pembantu WebMail
@model PartyInvites.Models.GuestResponse @( Layout = null; ) Terima kasih @{ cubalah { WebMail.SmtpServer = "smtp.example.com"; WebMail.SmtpPort = 587; WebMail.EnableSsl = benar; WebMail.UserName = "mySmtpUsername"; WebMail.Password = "mySmtpPassword"; WebMail.From = " [e-mel dilindungi]"; WebMail.Send(" [e-mel dilindungi]", "Pemberitahuan RSVP", Model.Name + " ialah " + ((Model.WillAttend ?? false) ? "" : "not") + "menghadiri"); } tangkapan (Pengecualian) { @:Maaf - kami tidak dapat menghantar e-mel untuk mengesahkan RSVP anda. } }

Terima kasih, @Model.Name!

@if (Model.WillAttend == true) (@ ​​:Senang sekali anda datang. Minuman sudah ada di dalam peti sejuk! ) Lain-lain ( @:Maaf mendengar bahawa anda tidak dapat melakukannya, tetapi terima kasih kerana memberitahu kami.)


Kami telah menambah ungkapan Razor yang menggunakan kaedah pembantu WebMail untuk mengkonfigurasi maklumat tentang pelayan e-mel kami, termasuk nama pelayan, sama ada pelayan memerlukan sambungan SSL dan maklumat akaun. Setelah kami menyediakan segala-galanya, kami menggunakan kaedah WebMail.Send untuk menghantar e-mel.

Kami memasukkan semua kod e-mel dalam percubaan...catch block supaya kami boleh memberi amaran kepada pengguna jika e-mel tidak dihantar. Kami melakukan ini dengan menambah blok teks pada output paparan Terima kasih. Adalah lebih baik untuk dipaparkan pembentangan berasingan ralat jika e-mel tidak dapat dihantar, tetapi kami mahu memastikan aplikasi MVC pertama kami mudah.

Banyak laman web termasuk kandungan yang tersedia hanya untuk orang yang telah log masuk (iaitu, yang telah disahkan). Secara lalai, ASP.NET menyediakan templat projek laman web yang termasuk halaman yang membolehkan anda melaksanakan tugas pengesahan.

Templat projek Web ASP.NET yang digambarkan dalam panduan ini adalah baharu dalam Visual Studio 2010.

Panduan ini menunjukkan kepada anda cara menggunakan templat projek Web ASP.NET untuk mencipta tapak Web dengan fungsi log masuk asas.

Tugasan yang digambarkan dalam panduan ini termasuk:

    Mencipta laman web ASP.NET.

    Membuat halaman ahli sahaja. Halaman tersebut hanya boleh diakses oleh pengguna yang disahkan (pengguna yang log masuk).

    Menggunakan halaman pendaftaran, yang membolehkan pengguna mendaftar dan membuat akaun baharu.

    Log masuk dan mengakses maklumat yang hanya tersedia untuk pengguna yang disahkan.

    Menggunakan halaman tukar kata laluan, yang membolehkan pengguna yang mempunyai akaun menukar kata laluan mereka.

    Menjadikan halaman perubahan kata laluan boleh diakses oleh pengguna yang disahkan (tetapi hanya kepada pengguna yang disahkan).

Prasyarat

Untuk melengkapkan panduan ini, anda memerlukan:

    Microsoft Visual Pembangun Web 2010 Express atau Visual Studio 2010.

    SQL Pelayan Express dipasang secara setempat pada komputer anda. Untuk mendapatkan maklumat tentang cara memasang SQL Server Express, lihat Cara: Menyambung ke Pangkalan Data AdventureWorksLT menggunakan Fail .MDF.

Mencipta Projek Tapak Web Baharu

Anda akan bermula dengan mencipta projek tapak Web ASP.NET baharu. Templat projek yang anda gunakan termasuk banyak elemen yang diperlukan untuk membuat tapak yang menyokong pengesahan.

Panduan ini menggunakan projek laman web. Anda boleh menggunakan projek aplikasi Web sebaliknya. Untuk maklumat tentang perbezaan antara jenis projek Web ini, lihat Projek Aplikasi Web berbanding Projek Laman Web.

Untuk mencipta tapak Web ASP.NET baharu

    Mulakan Visual Studio atau Visual Web Developer.

    Di dalam Fail menu, klik Laman Web Baharu. (Jika anda tidak melihat pilihan ini, klik Baru, dan kemudian klik Laman Web.)

    The Laman Web Baharu kotak dialog dipaparkan.

    Di bawah Templat yang Dipasang, klik Visual Basic atau C# dan kemudian pilih Tapak Web ASP.NET.

    Di dalam Lokasi Web kotak, pilih Sistem fail dan masukkan nama folder tempat anda ingin menyimpan halaman tapak Web. Sebagai contoh, masukkan nama folder C:\Websites\Login dan kemudian klik okey.

    Visual Studio mencipta folder dan membuka tapak Web masuk Sumber pandangan. Perhatikan bahawa tapak Web akar mengandungi beberapa fail dan folder termasuk folder Akaun, fail Web.config, halaman About.aspx dan Default.aspx dan halaman induk Site.master.

    Rumah halaman laman web dipaparkan dalam penyemak imbas. Perhatikan item menu ( Rumah, Tentang) dan juga Log masuk hiperpautan.

    Tutup pelayar.

Mencipta Halaman Ahli Sahaja

Dalam bahagian ini, anda akan membuat halaman ahli sahaja. Hanya pengguna yang log masuk (pengguna yang disahkan) boleh mengakses halaman ini. Anda akan menambah kawalan pada halaman induk untuk mengubah hala pengguna yang disahkan ke halaman ahli sahaja. Apabila pengguna yang tidak log masuk (pengguna tanpa nama) mengklik hiperpautan ahli sahaja, mereka akan dialihkan ke halaman log masuk di mana mereka boleh log masuk atau mencipta akaun.

Untuk membuat halaman ahli sahaja

    Dalam Penjelajah Penyelesaian, klik kanan folder Akaun dan kemudian klik Tambah Item Baharu.

    Pastikan anda membuat halaman baharu dalam folder Akaun.

    Di dalam Laman Web Baharu kotak dialog, pilih Borang Web.

    Di dalam Nama kotak teks, masukkan MembersOnly.aspx.

    Pilih Pilih halaman induk kotak semak dan kemudian klik Tambah.

    The Pilih Halaman Induk kotak dialog dipaparkan.

    Di bawah Kandungan folder, pilih Site.master dan kemudian klik okey.

    Halaman MembersOnly.aspx dicipta dalam folder Akaun. Halaman tersebut ialah halaman kandungan untuk halaman Site.master.

    Dalam Penjelajah Penyelesaian, dwiklik halaman MemberOnly.aspx untuk membukanya dan kemudian beralih ke Reka bentuk pandangan.

    Tambah kandungan ke halaman utama.

    Sebagai contoh, anda boleh menambah "Selamat datang ke halaman ahli sahaja. Anda telah berjaya melog masuk."

Selain halaman yang telah anda buat, folder Akaun mengandungi halaman dan fail berikut:

    Daftar.aspx. Halaman ini membenarkan pengguna baharu membuat akaun.

    Halaman Login.aspx. Ini meminta nama pengguna dan kata laluan.

    ChangePassword.aspx. Halaman ini membenarkan pengguna berdaftar menukar kata laluan mereka.

    ChangePasswordSuccess.aspx. Halaman ini dipaparkan apabila pengguna berjaya menukar kata laluan mereka.

    Fail Web.config.

Secara lalai, halaman dalam folder Akaun tidak boleh diakses oleh pengguna tanpa nama, kecuali halaman Register.aspx dan Login.aspx. Tetapan yang mentakrifkan akses kepada halaman dalam folder Akaun dikonfigurasikan dalam fail Web.config dalam folder itu. Tetapan yang mentakrifkan akses kepada halaman Log masuk dikonfigurasikan dalam fail Web.config akar.

Di dalam Hartanah windows, tukar sifat Teks kepada Tukar Kata Laluan. Anda boleh menerima ID lalai.

Di dalam Hartanah tetingkap, klik NavigateUrl dan klik elipsis ( ... ) butang.

The Pilih URL kotak dialog dipaparkan.

Di bawah Folder projek, klik Akaun.

Di bawah Kandungan folder okey.

Tekan CTRL+F5 untuk menjalankan halaman.

Perhatikan bahawa Tukar kata laluan pautan boleh diakses apabila anda tidak log masuk.

klik Tukar kata laluan.

Anda dialihkan ke halaman log masuk kerana ia halaman tukar kata laluan hanya boleh diakses oleh pengguna yang disahkan.

Masukkan nama pengguna dan kata laluan yang anda buat sebelum ini, dan kemudian klik Log masuk.

klik Log keluar.

Apabila anda dikembalikan ke halaman utama, tutup penyemak imbas.

Seterusnya, anda akan mengubah suai Tukar kata laluan hiperpautan untuk menjadikannya boleh diakses hanya kepada pengguna yang dilog masuk. Anda melakukan ini dengan menambahkan hiperpautan pada kawalan HeadLoginView pada halaman induk.

Untuk menjadikan pautan tukar kata laluan tersedia hanya kepada pengguna log masuk

    Dalam Penjelajah Penyelesaian, klik dua kali Site.master.aspx untuk membukanya dan kemudian beralih ke Reka bentuk pandangan.

    Padamkan Tukar kata laluan hyperlink yang anda buat sebelum ini.

    Bertukar kepada Sumber pandangan.

    Daripada Standard nod daripada Kotak alat, seret kawalan ke dalam elemen LoggedInTemplate yang berada di dalam kawalan LoginView.

    Tetapkan sifat Teks kepada Tukar Kata Laluan.

    Selepas atribut runat="server", taip "NavigateUrl=" dan kemudian klik dua kali Pilih URL... daripada senarai pop timbul.

    The Pilih Item Projek kotak dialog dipaparkan.

    Di bawah Folder projek, klik Akaun.

    Di bawah Folder kandungan, pilih ChangePassword.aspx dan kemudian klik okey.

    Penanda untuk hiperpautan akan menyerupai yang berikut:

    Tukar kata laluan

    Ambil perhatian bahawa hiperpautan ini tidak akan kelihatan dalam Reka bentuk lihat, kerana kandungan elemen LoggedInTemplate tidak boleh dilihat secara lalai.

Menguji Tapak Web

Anda kini boleh menguji kefungsian tukar kata laluan tapak Web.

Untuk menguji halaman tukar kata laluan

    Tekan CTRL+F5 untuk menjalankan tapak.

    Halaman utama dipaparkan, tetapi Ubah kata laluan Awak pautan tidak kelihatan.

    klik Log masuk dan masukkan nama pengguna dan kata laluan anda.

    Anda dialihkan ke halaman utama. Perhatikan bahawa nama anda dan tukar kata laluan anda pautan kini kelihatan.

    klik Ahli sahaja.

    Anda dialihkan ke halaman ahli sahaja.

    klik tukar kata laluan anda.

    Halaman tukar kata laluan dipaparkan.

    Masukkan kata laluan baharu.

    klik Tukar kata laluan. Jika perubahan berjaya, halaman kejayaan akan dipaparkan.

Menguji Kata Laluan Baharu

Seterusnya anda akan menggunakan kata laluan baharu anda untuk log masuk semula dan mengakses halaman ahli sahaja.

Untuk menguji kata laluan baharu

    klik Log keluar. Anda akan dialihkan ke halaman utama yang dilihat oleh pengguna tanpa nama.

    klik Log masuk.

    Masukkan nama pengguna anda dan yang baharu kata laluan dan kemudian klik Log masuk.

    Anda dialihkan ke halaman utama. Anda kini boleh mengakses kandungan yang tersedia untuk pengguna yang disahkan. .

    klik Ahli sahaja.

    Anda dialihkan ke halaman ahli sahaja. Jika anda cuba log masuk dengan pengesahan kata laluan lama anda akan gagal.

    Tutup pelayar.

Langkah seterusnya

Dalam panduan ini, anda menggunakan halaman yang merupakan sebahagian daripada templat projek tapak Web ASP.NET untuk mencipta tapak Web yang mengesahkan pengguna. Jika anda mahu, anda juga boleh membuat halaman log masuk anda sendiri untuk menyediakan kefungsian yang sama seperti yang digambarkan dalam panduan. Untuk maklumat lanjut, lihat .

Hari ini saya ingin memberikan 10 sebab yang baik mengapa ASP.NET untuk Pemula paling sesuai:

Jika anda sudah bekerja dengan PHP atau Java (atau pun .BERSIH), atau hanya ingin memahami cara membuat aplikasi web, maka saya akan mengesyorkan anda mempertimbangkan ASP.NET.

1. Kekurangan Sistem.Web

Bagi kami, pengguna WebForm, kami tidak boleh melakukannya tanpanya apabila membangunkan aplikasi web. Jika anda memutuskan untuk beralih ke ASP.NET MVC Core 1.0, maka ia menghapuskan interaksi dengan pustaka System.Web, yang membolehkan anda mempercepatkan pemuatan dan pengendalian tapak berasaskan ASP.NET.

2. Model 2016 baharu dan ditambah baik

ASP.NET MVC 4 untuk Pemula dan ASP.NET MVC 5 telah tenggelam dalam kelalaian... Beberapa ketika dahulu, .NET telah ditulis semula sepenuhnya dan dinamakan semula ASP.NET Core 1.0. Ini menjadikan kehidupan lebih mudah untuk pemaju. Peringkat penyusunan telah dikecualikan daripada kitaran biasa menulis kod, menyusun dan menguji kefungsian. Ini mempercepatkan proses pembangunan dengan ketara.

3. Perasaan yang lebih semula jadi

Saya telah menjadi pembangun di Microsoft sejak zaman ASP Klasik, dan apabila saya berpindah ke WebForms, peralihan itu tidak terasa semula jadi sama sekali. Dengan kemunculan MVC, proses membangunkan aplikasi web menjadi lebih semula jadi, dan saya menyukai format kerja ini. MVC tidak mempunyai ViewState atau IsPostback dan anda tidak perlu risau tentangnya sepanjang masa. Semuanya sangat mirip dengan PHP.

4. Paling popular di sekolah

Memandangkan ASP.NET adalah berdasarkan IIS, salah satu pelayan web yang paling popular, bekerja dengan MVC nampaknya agak biasa. Kebanyakan syarikat pada zaman ASP Klasik bermula dengan IIS. Hari ini, pelayan IIS menduduki 28% daripada keseluruhan Internet dan popular kedua selepas Apache dan nginx.

5. Penyepaduan Javascript yang dipermudahkan

Dalam WebForms, apabila cuba menggunakan Javascript, pelbagai masalah boleh timbul yang ramai di antara kita tidak menyedarinya. Saya telah melihat pemaju bergelut dengannya Penyepaduan JavaScript ke dalam kod WebForm Page_Load! Sebaliknya, ASP.NET MVC untuk Pemula membolehkan anda menyepadukan Javascript ke dalam aplikasi dengan hampir sempurna. Cuba laksanakan AngularJs dalam beberapa aplikasi web WebForms dan kemudian beritahu saya berapa banyak rambut yang anda tinggalkan di kepala anda.

6. Sumber terbuka

Kini semua orang boleh melihat kod tersebut! Jika anda ingin meluaskan View dan mencipta ViewEngine anda sendiri, cuma semak kod pada Github dan lihat cara ia dilaksanakan. Akses kepada kod sumber meningkatkan imaginasi!

7. Sokongan merentas platform

Kini anda boleh membuat aplikasi web pada mana-mana platform: Apple, Linux atau Windows.

8. Visual Studio bebas

Hampir dari saat sebutan pertama keluaran .NET/ASP.NET yang dikemas kini, semua jenis pembangun ( termasuk Microsoft) mula mencipta IDE mereka sendiri yang mendedahkan kemungkinan versi baru.BERSIH IDE sedemikian (Visual Studio Code atau Rider dalam #C daripada JetBrains) membolehkan anda membangunkan projek ASP.NET dan C# anda sendiri tanpa Visual Studio. Kini tidak kira apa persekitaran yang digunakan oleh pembangun, kerana pelanggan hanya memerlukan tapak web siap sedia!

9. Masyarakat yang mencukupi

ASP.NET MVC adalah mudah untuk pemula dan kebanyakan pembangun web udara segar. Alat ini membawa kita ke era baru, jauh dari WebForms. Sebahagian besar pembangun telah bertukar kepada MVC.

10. Ujian unit

Selain itu, ASP.NET MVC menyediakan keupayaan ujian unit. Ini sangat memudahkan proses ujian. Bagi sesetengah pembangun WebForm, ini akan kelihatan seperti konsep baharu sepenuhnya, kerana menguji beberapa antara muka dan komponen perniagaan sebelum ini menimbulkan masalah besar. Dengan ASP.NET MVC, anda boleh menguji semua komponen dengan mudah dan memastikan aplikasi anda berfungsi sepenuhnya.

Kesimpulannya

Saya harap hari ini anda telah mendapat maklumat yang mencukupi tentang kualiti ASP.NET MVC yang menjadikannya berbaloi untuk beralih kepada alat ini.

Terjemahan artikel “ 10 Sebab Untuk Mula Menggunakan ASP.NET MVC” telah disediakan oleh pasukan projek mesra.

baik buruk

Kemas kini terakhir: 31/10/2015

ASP.NET MVC ialah platform untuk mencipta laman web dan aplikasi web menggunakan corak (atau templat) MVC (model - view - controller).

Kerja pada platform baru bermula pada tahun 2007, dan versi pertama muncul pada tahun 2009. Akibatnya, pada masa ini (2012), 4 versi platform telah pun dikeluarkan, dan rangka kerja itu sendiri telah mendapat populariti yang hebat di seluruh dunia kerana fleksibiliti dan kebolehsuaiannya.

Corak MVC asas platform baharu, membayangkan interaksi tiga komponen: pengawal (pengawal), model (model) dan persembahan (pandangan). Apakah yang diwakili oleh komponen ini?

Pengawal mewakili kelas dari mana aplikasi sebenarnya bermula. Kelas ini menyediakan sambungan antara model dan pandangan. Menerima input pengguna, pengawal, berdasarkan logik dalaman, jika perlu, mengakses model dan menjana pandangan yang sesuai.

Pandangan ialah bahagian visual sebenar atau antaramuka pengguna aplikasi - contohnya, halaman html di mana pengguna yang melawat tapak berinteraksi dengan aplikasi web.

Model mewakili satu set kelas yang menerangkan logik data yang digunakan.

Skim interaksi umum boleh dipermudahkan seperti berikut:

ASP.NET MVC dan Borang Web ASP.NET

ASP.NET MVC dalam beberapa cara adalah pesaing kepada borang web tradisional dan mempunyai kelebihan berikut berbanding mereka:

    Perkongsian Tanggungjawab. Dalam MVC, aplikasi terdiri daripada tiga bahagian: pengawal, pandangan, dan model, setiap satunya melaksanakan fungsi khususnya sendiri. Hasilnya, aplikasi akan lebih mudah untuk diselenggara dan diubah suai pada masa hadapan.

    Oleh kerana pemisahan tanggungjawab, aplikasi mvc mempunyai kebolehujian yang lebih baik. Dan kita boleh menguji komponen individu secara bebas antara satu sama lain.

    Surat-menyurat protokol HTTP . Aplikasi MVC, tidak seperti Borang Web, tidak menyokong objek keadaan (ViewState). Kejelasan dan kesederhanaan platform membolehkan anda mencapainya lebih kawalan bekerja pada aplikasi

    Fleksibiliti. Anda boleh menyesuaikan pelbagai komponen platform mengikut kehendak anda. Tukar mana-mana bahagian saluran paip MVC atau sesuaikan dengan keperluan dan keperluan anda.

Pada masa yang sama, anda tidak seharusnya menolak sepenuhnya ASP.NET WebForms. Kerana ia juga mempunyai kekuatannya, contohnya, model acara, yang akan lebih dekat dengan pembangun yang sebelum ini terlibat dalam mencipta aplikasi klien.

Dengan borang web tradisional, anda mempunyai kawalan ke atas markup dan boleh, dalam masa nyata, editor visual Visual Studio untuk melihat rupa halaman tertentu. Apabila bekerja dengan MVC, Visual Studio tidak membenarkan anda melakukan ini.

Walau apa pun, anda bebas memilih platform yang paling sesuai untuk anda. Dan jika anda telah menulis projek besar menggunakan borang web tradisional, ia mungkin berbaloi untuk terus bekerja dengan mereka. Lebih-lebih lagi, Borang Web ASP.NET masih belum mati dan juga terus berkembang.