Training ASP.NET MVC 4

Pada tanggal 21 – 25 November 2012 telah dilaksanakan inhouse training dengan materi ASP.NET MVC 4. Peserta training adalah 8 orang developer dari PT Focus Inti Solusi, Jakarta. Adapun materi detail materi training adalah sebagai berikut :

No

Module

1

Introduction To ASP.NET MVC

  • · MVC vs Web Form
  • · Guidance
  • · Consideration using Web Form or MVC
  • · ASP.NET MVC Design Goal
  • · MVC Pattern
  • · MVC Routing
  • · Controller in MVC
  • · Controller & View Convention
  • · Views in MVC
  • · View Helpers
  • · Action Filters
  • · Unit Testing

2

MVC – Controller

  • · Routing
  • · Controller Action
  • · Action Filters
  • · Custom Action Filter
  • · Action Parameter
  • · Action Result
  • · ViewData & ViewBag
  • · Request Validation

3

MVC – Model

  • · ADO.NET Entity Framework
  • · EF Code First
  • · LINQ
  • · Mapping
  • · Model Binding
  • · Validation with Annotation
  • · Custom Validation
  • · Display & Edit Annotation

4

MVC – Views

  • · Razor View Engine
  • · Syntax Razor
  • · HTML Helpers
  • · Custom Helpers
  • · Layout
  • · Partial Views
  • · Security (XSS & CRSF)

5

MVC – AJAX

  • · JQuery
  • · AJAX Helpers
  • · JQuery UI
  • · Client Validation
  • · Unobtrusive Javascript
  • · JSON Action
  • · JQuery Templates

6

MVC – Infrastructure

  • · Caching
  • · Cache Profile
  • · Localization & Culture
  • · Resources
  • · Diagnostic

9

MVC – Security

  • · XSS
  • · Authentication
  • · Authorization
  • · CSRF

8

Configuration & Deployment

  • · Configuration files for .NET
  • · ASP.NET & IIS
  • · Custom Error
  • · Web Deployment Package

9

Study Case : Build E-Commerce Application

WP_000645WP_000649

ASP.NET & JQuery Tips (#3)

Pada tips kali ini kita akan membatasi agar user tidak dapat melakukan perintah cut/copy/paste pada textbox. Pada contoh script dibawah ini kita akan mencoba membatasi user yang akan melakukan copy paste pada textbox password.

1. Buat Web Form dengan nama DisallowCopy.aspx, kemudian tambahkan kode berikut:

clip_image002

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DisallowCopy.aspx.cs" Inherits="DisallowCopy" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;>

<html xmlns="http://www.w3.org/1999/xhtml&quot;>
<head runat="server">
    <title>Membatasi Perintah Cut, Copy, dan Paste</title>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(
            function () {
                $('#<%=txtNew.ClientID %>').bind('cut copy paste', function (e) {
                    e.preventDefault();
                    alert("Perintah Cut, Copy, dan Paste tidak diijinkan untuk digunakan !");
                });
                $('#<%=txtConfirm.ClientID %>').bind('cut copy paste', function (e) {
                    e.preventDefault();
                    alertalert("Perintah Cut, Copy, dan Paste tidak diijinkan untuk digunakan !");
                });
            }
        );
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div style="text-align:center;">
        <fieldset><br />
            <label for="txtCurrent">Current Password :</label><br />
            <asp:TextBox ID="txtCurrent" TextMode="Password" runat="server" /><br /><br />

            <label for="txtNew">New Password :</label><br />
            <asp:TextBox ID="txtNew" TextMode="Password" runat="server" /><br /><br />

            <label for="txtConfirm">Confirm New Password :</label><br />
            <asp:TextBox ID="txtConfirm" TextMode="Password" runat="server" /><br /><br />

            <asp:Button ID="btnSubmit" Text="Submit" runat="server" />&nbsp;
            <asp:Button ID="btnReset" Text="Reset" runat="server" /><br /><br />
        </fieldset>
    </div>
    </form>
</body>
</html>

2. Untuk mendisable perintah cut, copy, dan paste dapat digunakan method preventDefault().

3. Jalankan web page diatas, kemudian coba masukan nila pada New Password atau Confirm New Password, dan cobalah untuk melakukan copy, cut, atau paste, maka akan ditampilkan pesan kesalahan.

clip_image003

ASP.NET & JQuery Tips (#2)

Pada tips kali ini kita akan membuat auto focus pada textbox pertama dan berpindah tab dengan menggunakan tombol enter. Pada beberapa kasus tertentu, seperti aplikasi POS (Point Of Sale), user membutuhkan berpindah tab dengan menekan tombol enter.

1. Tambahkan Web Form dengan nama FocusEnter.aspx, kemudian tambahkan kode berikut:

clip_image002

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FocusEnter.aspx.cs" Inherits="FocusEnter" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Auto Focus dan Enter Tab</title>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('input:text:first').focus();
            $('input:text').bind("keydown", function (e) {
                if (e.which == 13) {
                    e.preventDefault();
                    var nextIndex = $('input:text').index(this) + 1;
                    $('input:text')[nextIndex].focus();
                }
            });
            $('#btnReset').click(function () {
                $('#form')[0].reset();
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <fieldset>
            <br />
            <label for="txtNama">Nama :</label><br />
            <asp:TextBox ID="txtNama" runat="server" /><br /><br />

            <label for="txtAlamat">Alamat :</label><br />
            <asp:TextBox ID="txtAlamat" runat="server" /><br /><br />

            <label for="txtPhone">Phone :</label><br />
            <asp:TextBox ID="txtPhone" runat="server" /><br /><br />

            <label for="txtEmail">Email :</label><br />
            <asp:TextBox ID="txtEmail" runat="server" /><br /><br />

            <asp:Button ID="btnSubmit" Text="Submit" runat="server" />&nbsp;
            <asp:Button ID="btnReset" Text="Reset" runat="server" /><br /><br />
        </fieldset>
    </div>
    </form>
</body>
</html>

2. Method bind() digunakan untuk menambahkan event handler ‘keydown’ kedalam textbox, kemudian cek jika ada penekanan tombol enter (kode 13), maka index akan ditambah untuk berpindah textbox.

3. Jalankan page diatas, maka pertama kali halaman diload textbox paling awal akan aktif, dan anda dapat berpindah tab dengan menekan tombol enter.

clip_image003

ASP.NET & JQuery Tips (#1)

Pada tips kali ini kita akan membahas penggunaan JQuery untuk memanipulasi server control pada ASP.NET. Hasil yang diharapkan adalah pengalaman interaktivitas yang lebih baik untuk pengguna tanpa tambahan overhead di sisi server.

Untuk mendownload library JQuery anda dapat mengakses alamat http://jquery.com. Ada beberapa tipe file yang dapat didownload yaitu:

  • Minified version : versi ini lebih disarankan untuk digunakan untuk lingkungan produksi karena memiliki ukuran file yang lebih kecil sehingga hanya dibutuhkan waktu yang sedikit untuk melakukan download.
  • Uncompressed version : versi ini disarankan digunakan untuk lingkungan development, mempunyai ukuran yang lebih besar daripada minified version, tapi cocok untuk kebutuhan debugging pada fase development.

Ada dua cara untuk menggunakan JQuery library yaitu:

  • Menggunakan library yang sudah dihosting seperti CDN (Community Development Networks) yang disediakan oleh vendor seperti Microsoft dan Google.
  • Mendownload library JQuery dan menambahkan pada direktori aplikasi anda.

Penggunaan CDN lebih disarankan karena memiliki keuntungan dari segi performance karena mekanisme caching dan parallelism, namun jika anda hendak mendeploy aplikasi tersebut pada Intranet, maka disarankan mendownload dan mengkopi library tersebut pada direktori lokal aplikasi anda.

Berikut adalah beberapa contoh penggunaan JQuery dengan ASP.NET.

Menambahkan Default Teks pada TextBox

1. Buat ASP.NET Website dengan nama SampleJQuery1

clip_image002

2. Setelah website berhasil dibuat anda dapat melihat bahwa pada solution explorer sudah terdapat folder script yang berisi library JQuery.

clip_image003

3. Tambahkan web form baru tanpa memilih master page pada Website yang anda buat, beri nama halaman tersebut DefaultTeks.aspx. Kemudian tambahkan kode berikut:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Menambahkan Default Teks</title>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var searchBox = $('#<%=txtSearch.ClientID %>');
            searchBox.focus(function () {
                if (searchBox.val() == this.title) {
                    searchBox.removeClass("teksDefault");
                    searchBox.val("");
                }
            });
            searchBox.blur(function () {
                if (searchBox.val() == "") {
                    searchBox.addClass("teksDefault");
                    searchBox.val(this.title);
                }
            });
            searchBox.blur();
        });
    </script>
    <style type="text/css">
        .teksDefault { font-style:italic; color:#CCCCCC; }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div style="text-align:center;">
        <fieldset>
            <asp:TextBox ID="txtSearch" ToolTip="Masukan Keyword disini"
            CssClass="teksDefault" Width="200px" runat="server" />
            <asp:Button ID="btnSearch" Text="Search" runat="server" />
        </fieldset>
    </div>
    </form>
</body>
</html>

4. ClientID adalah id unik yang digenerate oleh ASP.NET untuk memberi nama server control ketika dirender agar tidak terjadi duplikasi ketika control tersebut diulang.

5. Pada saat event focus() akan dicek apakah textbox mempunyai nilai sama dengan title (tooltip akan dirender menjadi atribut title), jika nilai sama maka textbox akan dikosongkan.

6. Pada saat event blur() dicek apakah nilai pada textbox kosong, jika kosong maka nilai akan diset sama seperti nilai pada atribut title.

7. Jika halaman tersebut dijalankan maka anda akan melihat bahwa textbox control yang anda buat memiliki nilai default yang otomatis akan menghilang ketika user memasukan inputan.

clip_image004

Nantikan contoh penggunaan ASP.NET & JQuery pada tips berikutnya