Selamat datang di Know4Share, Tempat Belajar .Net Tecnologies dan Bahasa Pemrograman Lainya- Blog dan Forum Know4Share Untuk saat Ini masih dalam tahap pengembangan, Regard Muhamad Albaijuri-

Cari Artikel

Iklan



Kamis, 26 Juli 2012

Html.Raw Error di ASP.Net MVC

Baru - baru ini lagi belajar ASP.NET MVC dan banyak hal yang bisa saya pelajari dari ASP.NET MVC dan dengan di gabungkan Entity Framework Database dalam project sederhana yang saya sedang buat. Namun kemarin saya disuruh mengimplementasikan Google ReChaptcha dalam ASP.Net MVC untuk mencegah SPAM.

Dalam pengimplementasian Google ReChaptcha saya menemukan kendala dengan Tag  Html.Raw pada asp.net MVC. wadunh setelah di baca baca lagi ternyata eh ternyata penggunaan Html.Raw hanya bisa digunakan di ASP.NET MVC 3 saja sedangkan project yang sedang saya buat hanya menggunakan ASP.NET MVC 2 yang tentunya belum mensupport keberadaan Html.Raw.

Ternyata setelah di baca baca di MSDN penjelasan mengenai Html.Raw itu adalah
"This method wraps HTML markup using the IHtmlString class, which renders unencoded HTML. ". Jadi Method Html.Raw yang ada di ASP.NET Mvc3 adalah sebagai penbungkus dari HTML code yang di hasilkan mungkin dari Server side dan di Uncode kembali menjadi HTML format.


Iseng Coba Coba, karena Kepepet buat Mengimplementasikan si Google ReChaptcha, akhirnya saya hanya menggunakan Html tag

saja untuk membungkus Method dari google ReChaptcha yang menghasilkan Html Uncode dari prosesnya dan ternyata berhasil juga :D.


Ooo,, dalem hati ternyata hanya menggunakan simple tag
untuk menggantikan si method Html.Raw yang ada di ASP.Net MVC 3.


Jadi kurang lebih penggunaanya hanya begini saja 
<%= Html.GenerateCaptcha("captcha", "clean")>
 di banding sebelumnya saya di buat bingung dengan <%= Html.Raw(Html.GenerateChaptcha("capcha","clean") %>. Selengkapnya...


Menggukanan Google reCapcha di Asp.NET MVC

Lagi Belajar ASP.Net mvc nih, dan lagi disuruh buat project-project sederhana buat implementasikan apa yang di pelajarkan. dan kebetulan sedang buat Contact View yang di harus menggunakan Capcha sebagai pencegah BOT yang menginput secara otomatis bs menggunakan selenium Tools atau sebagainya.

Berikut cara mengimplementasikan penggunaan Capcha yang disini saya menggunakan Google reCapcha sebagai Engine :) :

  • Download .Net DLL reCapcha yang akan di gunakan dalam project ASP MVC. Download Disini.
  • Ekstrak zip, Copy Recapcha.dll dan Recapcha.res ke dalam folder BIN project anda
  • Add Reference Recapcha.dll kedalam project ASP.NET MVC anda
  • Tambahkan Beberapa Application Configuration di Web.Config untuk Private key dan Public Key Google API yang nanti akan di gunakan oleh DLL reCapcha dan juga configurasi untuk meregister ReCapcha Component. Untuk mendapatkan Public key dan Private Key bisa di dapatkan disini, Harus Login dengan menggunakan Google Account(GMail) dan registerkan domain "localhost" jika anda mendevelop dalam localserver.
Tambahkan Configurasi dibawah ini dalam Tag dalam web config. Lihat dan cocokan, copy saja yang belum ada dalam tag
<appSettings>
 <add key="webpages:Version" value="1.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
    <add key="ReCaptchaPrivateKey" value="put your private key value here" />
    <add key="ReCaptchaPublicKey" value="put your public key value here" />
<appSettings>

Tambahkan Configurasi dibawah ini dalam Tag dalam web config. Lihat dan cocokan, copy saja yang belum ada dalam tag

<namespaces>
  <add namespace="System.Web.Mvc" />
  <add namespace="System.Web.Mvc.Ajax" />
  <add namespace="System.Web.Mvc.Html" />
  <add namespace="System.Web.Routing" />
  <add namespace="Recaptcha"/>
</namespaces>
  • Tambahkan Code Using.Recapcha dalam Controller View yang akan menggunakan Capcha atau Controller Capcha.
  • Import Recapcha dalam view page
<@ Import Namespace="Recaptcha" >
  • Tambahkan Code Dibawah ini untuk menapilkan Capcha dalam view
<div class="editor-label">
   Enter Capcha Caracter:
</div>
<div class="editor-field">
    <Html.Raw(Html.GenerateCaptcha("captcha", "clean"))>
    <Html.ValidationMessage("captcha")>
</div>

Tips: Jika anda menggunakan ASP.NET MVC versi 2 Kebawah, untuk menggantikan Htm.Raw anda bisa hanya menggunakan HTML tag <div> </div>. Sehingga menjadi seperti ini:
<div class="editor-label">
   Enter Capcha Caracter:
</div>
<div class="editor-field">
    <div><%= Html.GenerateCaptcha("captcha", "clean")></div>
    <% Html.ValidationMessage("captcha")>
</div>
  • Dan tambahkan Code Controller di Controller anda seperti ini
[HttpPost]
[RecaptchaControlMvc.CaptchaValidator]
public ActionResult ForgotPassword(CheckUsernameViewModel model, bool captchaValid, string captchaErrorMessage) {
    if (!Membership.EnablePasswordReset)
        throw new Exception("Password reset is not allowed\r\n");
    if(ModelState.IsValid) {
        if(captchaValid) {
            return RedirectToAction("AnswerSecurityQuestion", new { username = model.Username });
        }
        ModelState.AddModelError("", captchaErrorMessage);
    }
    return View(model);
}
*Note : Untuk Nama function di controller(Berwarna Merah) silahkan anda sesuaikan dengan nama view yang anda buat dan untuk nama Model(Berwarna Biru) Silahkan anda sesuaikan dengan Model yang anda gunakan.

Beginilah hasil form dari view yang saya buat:


Selamat mencoba.

Salam,
Muhamad Albaijuri
.Net Application Developer Selengkapnya...