Begitu sudah memahami apa yang terjadi pada Startup.cs, sekarang kita siap untuk melangkah ke ASP.NET MVC 6, versi paling baru dari framework MVC yang saat ini masih dalam tahap beta.
Tulisan ini merupakan bagian dari tulisan berseri yang terdiri dari beberapa artikel di bawah
1. Memulai
2. Startup
3. MVC 6 (Tulisan ini)
4. Dependency Injection
5. Web API
6. Entity Framework 7 (Coming soon)
Menambahkan Dependency
Untuk bisa menggunakan MVC dan fitur barunya yang bernama Tag Helper, kita perlu menambahkan beberapa dependency yang diperlukan. Buka file project.json dan tambahkan 3 buah library
1 2 3 4 5 6 7 |
"dependencies": { "Microsoft.AspNet.Server.IIS": "1.0.0-beta5", "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5", "Microsoft.AspNet.Mvc": "6.0.0-beta5", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5", "Microsoft.AspNet.Tooling.Razor" : "1.0.0-beta5" }, |
Library Microsoft.AspNet.Mvc” digunakan untuk bisa menggunakan MVC dan library Microsoft.AspNet.Mvc.TagHelpers serta Microsoft.AspNet.Tooling.Razor supaya bisa menggunakan Tag Helper.
Membuat Folder
Buatlah beberapa folder baru di root project untuk kepentingan MVC kita. Ada 4 folder yang dibuat yaitu Models, Views, Controllers dan Repository. Folder Repository opsional saja di sini, hanya saya gunakan untuk meletakkan file kelas repository.
Konfigurasi Startup
Kita siap untuk melakukan konfigurasi di Startup.cs begitu dependency sudah ditambahkan. Untuk keperluan konfigurasi, MVC perlu ditambahkan ke DI Container dan ke pipeline. Oleh karena itu, konfigurasi akan terjadi di 2 method.
Untuk mendaftarkan MVC ke DI Container sangatlah mudah, lihat kode berikut
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } |
Sedangkan untuk mendaftarkan ke pipeline sekaligus melakukan konfigurasi default routing adalah berikut
1 2 3 4 5 6 |
public void Configure(IApplicationBuilder app) { app.UseMvc(route => { route.MapRoute("Default", "{Controller=Home}/{Action=Index}/{Id:int?}"); }); } |
Tidak seperti yang terdahulu di mana kita menggunakan anonymous object pada parameter ketiga untuk memberikan default nilai pada template, sekarang cukup dengan menggunakan tanda = pada template maka itulah yang menjadi nilai default.
Pun juga alih-alih menggunakan parameter keempat untuk constraint berupa regex kita bisa langsung menggunakannya di template. Pada contoh di atas terdapat pada {Id:int?}. int dimaksudkan agar id hanya bertipe integer.
Tanda tanya (?) maksudnya adalah bahwa id opsional, boleh ada boleh tidak.
Oh iya. Tentu saja bila ingin menggunakan attribute routing pun bisa.
MVC Beraksi
Sampai tahap ini maka konfigurasi untuk MVC sudah siap dan tinggal membuat Model, View dan Controller sesuai kebutuhan. Contoh saya punya Controller seperti di bawah
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class HomeController : Controller { private StudentRepository _studentRepository = new StudentRepository(); public IActionResult Index() { var students = _studentRepository.Get(); return View(students); } public IActionResult Get(int id) { var student = _studentRepository.Get(id); return View(student); } } |
Sekarang mari kita buat view-nya dengan memanfaatkan fitur baru yaitu Tag Helper.
Pada root folder View buat sebuah MVC View Import Page dengan nama _ViewImports.cshtml.
Dan isikan baris berikut di dalamnya untuk bisa menggunakan Tag Helper pada semua halaman view.
1 |
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" |
Saya berikan contoh halaman view untuk menampilkan data semua model yang saya buat.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
@{ ViewBag.Title = "Home Page"; Layout = "_Layout"; } @using MiniTour.Models @model List<Student> <h3>Student List</h3> <hr/> <table> <tr> <th>First Name</th> <th>LastName</th> <th></th> </tr> @foreach (var s in Model) { <tr> <td>@s.FirstName</td> <td>@s.LastName</td> <td>@Html.ActionLink("Detail","Get","Home",new { id=s.Id}) | <a asp-controller="Home" asp-action="Get" asp-route-id="@s.Id">Detail</a></td> </tr> } </table> |
Perhatikan pada 2 baris yang saya tandai. Pertama adalah bahwa sekarang kita bisa menggunakan using di Razor. Kedua, saya membuat link dengan menggunakan bantuan Tag Helper.
Kesimpulan
Sejauh yang saya pelajari sampai saat ini, di MVC 6 perubahan yang memerlukan kita untuk beradaptasi adalah hal-hal yang mengenai konfigurasi dan fitur baru semacam Tag Helper. Selebihnya untuk menggunakan MVC ini sama saja dengan versi terdahulu di mana kita membuat Model, View dan Controller sesuai kebutuhan.