ASP.NET MVC 3
(termasuk Pembaruan Alat April 2011)
ASP.NET MVC 3 adalah kerangka kerja untuk membangun aplikasi web berbasis standar yang dapat diskalakan menggunakan pola desain yang mapan dan kekuatan ASP.NET dan .NET Framework.
Ini menginstal berdampingan dengan ASP.NET MVC 2, jadi mulai menggunakannya hari ini!
Unduh alat penginstal di sini
- Sistem Perancah Terintegrasi dapat diperluas melalui NuGet
- Templat proyek dengan dukungan HTML 5
- Tampilan Ekspresif termasuk Razor View Engine baru
- Hook yang kuat dengan Injeksi Dependensi dan Filter Tindakan Global
- Dukungan JavaScript yang kaya dengan JavaScript yang tidak mengganggu, Validasi jQuery, dan pengikatan JSON
- Baca daftar fitur lengkap di bawah ini
Yang Baru di ASP.NET MVC 3
- Phil Haack: ASP.NET MVC 3 Dirilis
- Scott Hanselman: ASP.NET MVC3, WebMatrix, NuGet, IIS Express, dan Orchard dirilis - Rilis Web Microsoft Januari dalam Konteks
- Scott Guthrie: Mengumumkan rilis ASP.NET MVC 3, IIS Express, SQL CE 4, Web Farm Framework, Orchard, WebMatrix
- Catatan Rilis untuk ASP.NET MVC 3
Penginstalan dan Bantuan
- Instal ASP.NET MVC 3 menggunakan Penginstal Platform Web (disarankan)
- Instal ASP.NET MVC 3 menggunakan executable penginstal
- Instal ASP.NET MVC 3 untuk Pratinjau Pengembang Visual Studio 11
- Baca tutorial Pengantin untuk ASP.NET MVC 3
- Dapatkan bantuan dan diskusikan ASP.NET MVC 3 di forum
ASP.NET MVC 3 dibangun pada ASP.NET MVC 1 dan 2, menambahkan fitur hebat yang menyederhanakan kode Anda dan memungkinkan ekstensibilitas yang lebih dalam. Topik ini memberikan gambaran umum tentang banyak fitur baru yang disertakan dalam rilis ini, yang diatur ke dalam bagian berikut:
- Perancah yang Dapat Diperluas dengan integrasi MvcScaffold
- Templat proyek dengan dukungan HTML 5
- Mesin Razor View
- Dukungan untuk Mesin Beberapa Tampilan
- Peningkatan Pengontrol
- JavaScript dan Ajax
- Peningkatan Validasi Model
- Peningkatan Injeksi Dependensi
- Fitur Baru Lainnya
Sistem Perancah baru memudahkan untuk mengambil dan mulai menggunakan secara produktif jika Anda sama sekali baru menggunakan kerangka kerja, dan untuk mengotomatiskan tugas pengembangan umum jika Anda berpengalaman dan sudah tahu apa yang Anda lakukan.
Ini didukung oleh paket perancah NuGet baru yang disebut MvcScaffolding. Istilah "Perancah" digunakan oleh banyak teknologi perangkat lunak untuk berarti "dengan cepat menghasilkan kerangka dasar perangkat lunak Anda yang kemudian dapat Anda edit dan sesuaikan". Paket perancah yang kami buat untuk ASP.NET MVC sangat bermanfaat dalam beberapa skenario:
- Jika Anda belajar ASP.NET MVC untuk pertama kalinya, karena memberi Anda cara cepat untuk mendapatkan beberapa kode kerja yang berguna, yang kemudian dapat Anda edit dan adaptasi sesuai dengan kebutuhan Anda. Ini menyelamatkan Anda dari trauma melihat halaman kosong dan tidak tahu harus mulai dari mana!
- Jika Anda tahu ASP.NET MVC dengan baik dan sekarang menjelajahi beberapa teknologi add-on baru seperti pemeta relasional objek, mesin tampilan, pustaka pengujian, dll., karena pembuat teknologi itu mungkin juga telah membuat paket perancah untuk itu.
- Jika pekerjaan Anda melibatkan pembuatan kelas atau file serupa berulang kali, karena Anda dapat membuat perancah kustom yang menghasilkan perlengkapan pengujian, skrip penyebaran, atau apa pun yang Anda butuhkan. Semua orang di tim Anda juga dapat menggunakan perancah kustom Anda.
Fitur lain dalam MvcScaffolding meliputi:
- Dukungan untuk proyek C# dan VB
- Dukungan untuk mesin tampilan Razor dan ASPX
- Mendukung perancah ke area MVC ASP.NET dan menggunakan tata letak/master tampilan kustom
- Anda dapat dengan mudah menyesuaikan output dengan mengedit templat T4
- Anda dapat menambahkan perancah yang sepenuhnya baru menggunakan logika PowerShell kustom dan templat T4 kustom. Ini (dan parameter kustom apa pun yang Anda berikan) secara otomatis muncul di daftar penyelesaian tab konsol.
- Anda bisa mendapatkan paket NuGet yang berisi perancah tambahan untuk teknologi yang berbeda (misalnya, ada bukti konsep satu untuk LINQ ke SQL sekarang) dan mencampur dan mencocokkannya bersama-sama
Pembaruan Alat MVC 3 ASP.NET mencakup dukungan Visual Studio yang hebat untuk sistem perancah ini, seperti:
- Tambahkan Dialog Pengontrol sekarang mendukung perancah otomatis penuh dari tindakan Buat, Baca, Perbarui, dan Hapus pengontrol dan tampilan yang sesuai. Secara default, perancah kode akses data menggunakan Kode EF Pertama.
- Tambahkan Dialog Pengontrol mendukung perancah yang dapat diperluas melalui paket NuGet seperti MvcScaffolding. Ini memungkinkan penyumbatan perancah kustom ke dalam dialog yang akan memungkinkan Anda membuat perancah untuk teknologi akses data lainnya seperti NHibernate atau bahkan JET dengan ODBCDirect jika Anda sangat cenderung!
Untuk informasi selengkapnya tentang Perancah di ASP.NET MVC 3, lihat sumber daya berikut ini:
Seri postingan Steve Sanderson, termasuk:
Postingan Scott Hanselman dari sesi PDC 2010-nya Membangun Blog dengan Microsoft "Paket Cinta Web yang Tidak Disebutkan Namanya"
Dialog Proyek Baru menyertakan kotak centang aktifkan templat proyek versi HTML 5. Templat ini memanfaatkan Modernizr 1.7 untuk memberikan dukungan kompatibilitas untuk HTML 5 dan CSS 3 di browser tingkat bawah.
ASP.NET MVC 3 hadir dengan mesin tampilan baru bernama Razor yang menawarkan manfaat berikut:
- Sintaks razor bersih dan ringkas, membutuhkan jumlah minimum penekanan tombol.
- Razor mudah dipelajari, sebagian karena didasarkan pada bahasa yang ada seperti C# dan Visual Basic.
- Visual Studio menyertakan IntelliSense dan pewarnaan kode untuk sintaks Razor.
- Tampilan razor dapat diuji unit tanpa mengharuskan Anda menjalankan aplikasi atau meluncurkan server web.
Beberapa fitur Razor baru meliputi yang berikut ini:
@model
sintaks untuk menentukan jenis yang diteruskan ke tampilan.@* *@
sintaks komentar.- Kemampuan untuk menentukan default (seperti
layoutpage
) sekali untuk seluruh situs. - Metode
Html.Raw
untuk menampilkan teks tanpa pengodean HTML. - Dukungan untuk berbagi kode di antara beberapa tampilan (file _viewstart.cshtml atau _viewstart.vbhtml ).
Razor juga menyertakan pembantu HTML baru, seperti berikut ini:
Chart
. Merender bagan, menawarkan fitur yang sama dengan kontrol bagan di ASP.NET 4.WebGrid
. Merender kisi data, lengkap dengan fungsionalitas penomoran dan pengurutan.Crypto
. Menggunakan algoritma hashing untuk membuat kata sandi asin dan hash dengan benar.WebImage
. Merender gambar.WebMail
. Mengirim pesan email.
Untuk informasi selengkapnya tentang Razor, lihat sumber daya berikut ini:
- Posting blog Scott Guthrie memperkenalkan Razor
- Scott Guthrie's blog post introducing the @model keyword
- Posting blog Scott Guthrie memperkenalkan tata letak Razor
- Referensi Cepat Razor API
- Catatan Rilis MVC 3
Kotak dialog Tambahkan Tampilan di ASP.NET MVC 3 memungkinkan Anda memilih mesin tampilan yang ingin Anda kerjakan, dan kotak dialog Proyek Baru memungkinkan Anda menentukan mesin tampilan default untuk proyek. Anda dapat memilih mesin tampilan Formulir Web (ASPX), Razor, atau mesin tampilan sumber terbuka seperti Spark, NHaml, atau NDjango.
Terkadang Anda ingin melakukan logika baik sebelum metode tindakan berjalan atau setelah metode tindakan berjalan. Untuk mendukung hal ini, ASP.NET MVC 2 menyediakan filter tindakan. Filter tindakan adalah atribut kustom yang menyediakan cara deklaratif untuk menambahkan perilaku pra-tindakan dan pasca-tindakan ke metode tindakan pengontrol tertentu. Namun, dalam beberapa kasus Anda mungkin ingin menentukan perilaku pra-tindakan atau pasca-tindakan yang berlaku untuk semua metode tindakan. MVC 3 memungkinkan Anda menentukan filter global dengan menambahkannya ke GlobalFilters
koleksi. Untuk informasi selengkapnya tentang filter tindakan global, lihat sumber daya berikut ini:
Pengontrol MVC 2 mendukung ViewData
properti yang memungkinkan Anda meneruskan data ke templat tampilan menggunakan API kamus yang terikat terlambat. Di MVC 3, Anda juga dapat menggunakan sintaks yang agak lebih sederhana dengan ViewBag
properti untuk mencapai tujuan yang sama. Misalnya, alih-alih menulis ViewData["Message"]="text"
, Anda dapat menulis ViewBag.Message="text"
. Anda tidak perlu menentukan kelas dengan jenis kuat untuk menggunakan ViewBag
properti . Karena ini adalah properti dinamis, Anda hanya dapat mendapatkan atau mengatur properti dan itu akan menyelesaikannya secara dinamis pada durasi. Secara internal, ViewBag
properti disimpan sebagai pasangan nama/nilai dalam ViewData
kamus. (Catatan: di sebagian besar versi pra-rilis MVC 3, ViewBag
properti diberi nama ViewModel
properti .)
Jenis berikut ActionResult
dan metode pembantu yang sesuai baru atau ditingkatkan dalam MVC 3:
- HttpNotFoundResult. Mengembalikan kode status HTTP 404 ke klien.
- RedirectResult. Mengembalikan pengalihan sementara (kode status HTTP 302) atau pengalihan permanen (kode status HTTP 301), bergantung pada parameter Boolean. Bersama dengan perubahan ini, kelas Pengontrol sekarang memiliki tiga metode untuk melakukan pengalihan permanen:
RedirectPermanent
,RedirectToRoutePermanent
, danRedirectToActionPermanent
. Metode ini mengembalikan instansRedirectResult
dengan properti yangPermanent
diatur ketrue
. - HttpStatusCodeResult. Mengembalikan kode status HTTP yang ditentukan pengguna.
Secara default, Ajax dan pembantu validasi di MVC 3 menggunakan pendekatan JavaScript yang tidak mengganggu. JavaScript yang tidak mengganggu menghindari menyuntikkan JavaScript sebaris ke HTML. Ini membuat HTML Anda lebih kecil dan kurang berantakan, dan memudahkan untuk menukar atau menyesuaikan pustaka JavaScript. Pembantu validasi di MVC 3 juga menggunakan jQueryValidate
plugin secara default. Jika Anda menginginkan perilaku MVC 2, Anda dapat menonaktifkan JavaScript yang tidak mengganggu menggunakan pengaturan file web.config . Untuk informasi selengkapnya tentang peningkatan JavaScript dan Ajax, lihat sumber daya berikut ini:
- Pengantar dasar JavaScript yang tidak mengganggu di situs Wikipedia
- Brad Wilson's Unobtrusive JavaScript Post
- Brad Wilson's Unobtrusive JavaScript Validation Post
- Membuat Aplikasi MVC 3 dengan Razor dan Unobtrusive JavaScript (tutorial di situs ASP.NET)
- Catatan Rilis MVC 3
Dalam versi MVC yang lebih lama, Anda perlu secara eksplisit memanggil Html.EnableClientValidation
metode dari tampilan untuk mengaktifkan validasi sisi klien. Di MVC 3 ini tidak lagi diperlukan karena validasi sisi klien diaktifkan secara default. (Anda dapat menonaktifkan ini menggunakan pengaturan dalam file web.config .)
Agar validasi sisi klien berfungsi, Anda masih perlu mereferensikan pustaka Validasi jQuery dan jQuery yang sesuai di situs Anda. Anda dapat menghosting pustaka tersebut di server Anda sendiri atau mereferensikannya dari jaringan pengiriman konten (CDN) seperti CDN dari Microsoft atau Google.
ASP.NET MVC 3 mendukung kelas RemoteAttribute baru yang memungkinkan Anda memanfaatkan dukungan validator jarak jauh plug-in Validasi jQuery. Ini memungkinkan pustaka validasi sisi klien untuk secara otomatis memanggil metode kustom yang Anda tentukan di server untuk melakukan logika validasi yang hanya dapat dilakukan di sisi server.
Dalam contoh berikut, Remote
atribut menentukan bahwa validasi klien akan memanggil tindakan yang dinamai UserNameAvailable
UsersController
pada kelas untuk memvalidasi UserName
bidang .
public class User
{
[Remote("UserNameAvailable", "Users")]
public string UserName { get; set; }
}
Contoh berikut menunjukkan pengontrol yang sesuai.
public class UsersController
{
public bool UserNameAvailable(string username)
{
if(MyRepository.UserNameExists(username))
{
return "false";
}
return "true";
}
}
Untuk informasi selengkapnya tentang cara menggunakan Remote
atribut , lihat Cara: Menerapkan Validasi Jarak Jauh di ASP.NET MVC di pustaka MSDN.
ASP.NET MVC 3 menyertakan dukungan pengikatan JSON bawaan yang memungkinkan metode tindakan untuk menerima data yang dikodekan JSON dan mengikat model ke parameter metode tindakan. Kemampuan ini berguna dalam skenario yang melibatkan templat klien dan pengikatan data. (Templat klien memungkinkan Anda memformat dan menampilkan satu item data atau kumpulan item data dengan menggunakan templat yang dijalankan pada klien.) MVC 3 memungkinkan Anda untuk dengan mudah menghubungkan templat klien dengan metode tindakan di server yang mengirim dan menerima data JSON. Untuk informasi selengkapnya tentang dukungan pengikatan JSON, lihat bagian JavaScript dan Peningkatan AJAX dari posting blog Pratinjau MVC 3 Scott Guthrie.
ASP.NET MVC 3 mendukung DataAnnotations
atribut metadata seperti DisplayAttribute
.
Kelas ValidationAttribute
ditingkatkan di .NET Framework 4 untuk mendukung kelebihan beban baru IsValid
yang memberikan informasi lebih lanjut tentang konteks validasi saat ini, seperti objek apa yang sedang divalidasi. Ini memungkinkan skenario yang lebih kaya di mana Anda dapat memvalidasi nilai saat ini berdasarkan properti lain dari model. Misalnya, atribut baru CompareAttribute
memungkinkan Anda membandingkan nilai dua properti model. Dalam contoh berikut, ComparePassword
properti harus cocok dengan Password
bidang agar valid.
public class User
{
[Required]
public string Password { get; set; }
[Required, Compare("Password")]
public string ComparePassword { get; set; }
}
Antarmuka IValidatableObject memungkinkan Anda melakukan validasi tingkat model, dan memungkinkan Anda untuk memberikan pesan kesalahan validasi yang khusus untuk status model keseluruhan, atau di antara dua properti dalam model. MVC 3 sekarang mengambil kesalahan dari IValidatableObject
antarmuka saat pengikatan model, dan secara otomatis menandai atau menyoroti bidang yang terpengaruh dalam tampilan menggunakan pembantu formulir HTML bawaan.
Antarmuka IClientValidatable memungkinkan ASP.NET MVC untuk menemukan pada waktu proses apakah validator memiliki dukungan untuk validasi klien. Antarmuka ini telah dirancang sehingga dapat diintegrasikan dengan berbagai kerangka kerja validasi.
Untuk informasi selengkapnya tentang antarmuka validasi, lihat bagian Peningkatan Validasi Model dari posting blog Pratinjau MVC 3 Scott Guthrie. (Namun, perhatikan bahwa referensi ke "IValidateObject" di blog harus "IValidatableObject".)
ASP.NET MVC 3 memberikan dukungan yang lebih baik untuk menerapkan Injeksi Dependensi (DI) dan untuk mengintegrasikan dengan kontainer Injeksi Dependensi atau Inversi Kontrol (IOC). Dukungan untuk DI telah ditambahkan di area berikut:
- Pengontrol (mendaftarkan dan menyuntikkan pabrik pengontrol, menyuntikkan pengontrol).
- Tampilan (mendaftarkan dan menyuntikkan mesin tampilan, menyuntikkan dependensi ke halaman tampilan).
- Filter tindakan (menemukan dan menyuntikkan filter).
- Pengikat model (mendaftar dan menyuntikkan).
- Penyedia validasi model (mendaftar dan menyuntikkan).
- Penyedia metadata model (mendaftar dan menyuntikkan).
- Penyedia nilai (mendaftar dan menyuntikkan).
MVC 3 mendukung pustaka Common Service Locator dan kontainer DI apa pun yang mendukung antarmuka pustaka tersebut IServiceLocator
. Ini juga mendukung antarmuka baru IDependencyResolver
yang memudahkan integrasi kerangka kerja DI.
Untuk informasi selengkapnya tentang DI di MVC 3, lihat sumber daya berikut ini:
ASP.NET MVC 3 secara otomatis menginstal dan mengaktifkan NuGet sebagai bagian dari penyiapannya. NuGet adalah manajer paket sumber terbuka gratis yang memudahkan Untuk menemukan, menginstal, dan menggunakan pustaka dan alat .NET dalam proyek Anda. Ini berfungsi dengan semua jenis proyek Visual Studio (termasuk ASP.NET Web Forms dan ASP.NET MVC).
NuGet memungkinkan pengembang yang memelihara proyek sumber terbuka (misalnya, proyek seperti Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks, dan Elmah) untuk mengemas pustaka mereka dan mendaftarkannya di galeri online. Kemudian mudah bagi pengembang .NET yang ingin menggunakan salah satu pustaka ini untuk menemukan paket dan menginstalnya dalam proyek yang sedang mereka kerjakan.
Dengan ASP.NET 3 Tools Update, templat proyek menyertakan pustaka JavaScript paket NuGet yang telah diinstal sebelumnya, sehingga dapat diperbarui melalui NuGet. Kode Kerangka Kerja Entitas Pertama juga telah diinstal sebelumnya sebagai paket NuGet.
Untuk informasi selengkapnya tentang NuGet, lihat dokumentasi NuGet.
ASP.NET MVC telah mendukung penembolokan output respons halaman penuh sejak versi 1. MVC 3 juga mendukung penembolokan output halaman parsial, yang memungkinkan Anda untuk dengan mudah menyimpan wilayah atau fragmen respons. Untuk informasi selengkapnya tentang penembolokan, lihat bagian Penembolokan Output Halaman Parsial dari posting blog Scott Guthrie di kandidat rilis MVC 3 dan bagian Penembolokan Output Tindakan Anak dari Catatan Rilis MVC 3.
ASP.NET MVC memiliki validasi permintaan bawaan yang secara otomatis membantu melindungi dari serangan injeksi XSS dan HTML. Namun, terkadang Anda ingin secara eksplisit menonaktifkan validasi permintaan, seperti jika Anda ingin mengizinkan pengguna memposting konten HTML (misalnya, dalam entri blog atau konten CMS). Anda sekarang dapat menambahkan atribut AllowHtml ke model atau melihat model untuk menonaktifkan validasi permintaan berdasarkan per properti selama pengikatan model. Untuk informasi selengkapnya tentang validasi permintaan, lihat sumber daya berikut ini:
- Bagian JavaScript dan Validasi Yang Tidak Mengganggu di posting blog Scott Guthrie di kandidat rilis MVC 3.
- Catatan Rilis MVC 3
Di ASP.NET MVC 3 Anda dapat menambahkan templat proyek, melihat mesin, dan kerangka kerja proyek pengujian unit ke kotak dialog Proyek Baru .
ASP.NET templat perancah MVC 3 melakukan pekerjaan yang lebih baik untuk mengidentifikasi properti kunci primer pada model dan menanganinya dengan tepat daripada di MVC versi sebelumnya. (Misalnya, templat perancah sekarang memastikan bahwa kunci primer tidak dibuat perancah sebagai bidang formulir yang dapat diedit.)
Secara default, perancah Buat dan Edit sekarang menggunakan pembantu Html.EditorFor
alih-alih pembantu Html.TextBoxFor
. Ini meningkatkan dukungan untuk metadata pada model dalam bentuk atribut anotasi data saat kotak dialog Tambahkan Tampilan menghasilkan tampilan.
Kelebihan metode baru telah ditambahkan untuk metode pembantu LabelFor
dan LabelForModel
. Kelebihan beban baru memungkinkan Anda menentukan atau mengambil alih teks label.
Dalam ASP.NET MVC 3 Anda dapat menunjukkan apakah Anda ingin kelas pengontrol menggunakan status sesi, dan jika demikian, apakah status sesi harus dibaca/ditulis atau baca-saja. Untuk informasi selengkapnya tentang dukungan pengontrol tanpa sesi, lihat Catatan Rilis MVC 3.
Anda dapat menggunakan atribut AdditionalMetadata untuk mengisi ModelMetadata.AdditionalValues
kamus untuk properti model. Misalnya, jika model tampilan memiliki properti yang harus ditampilkan hanya kepada administrator, Anda dapat membuat anotasi properti tersebut seperti yang ditunjukkan dalam contoh berikut:
public class ProductViewModel
{
[AdditionalMetadata("AdminOnly", true)]
public string RefundCode {get; set;}
}
Metadata ini tersedia untuk templat tampilan atau editor apa pun saat model tampilan produk dirender. Terserah Anda untuk menafsirkan informasi metadata.
AccountController dalam templat proyek Internet telah sangat ditingkatkan.
Templat Proyek Intranet baru disertakan yang memungkinkan Autentikasi Windows dan menghapus AccountController.