Archive

Posts Tagged ‘webform’

MVC, Ajax and Internet Explorer

March 23rd, 2009 ayah No comments

Internet Explorer mempunyai kelemahan apabila ada request yang bersifat async (ajax). Dia tidak akan langsung melakukan load terhadap request yang dimaksud, tetapi dia akan melakukan load dari cache apabila cache yang berkaitan dengan request tersebut masih valid. Sehingga response yang diberikan adalah data dari cache.Nyebelin ya…ini yang bikin rese….
Pada webform standar sebenarnya cara untuk mengatasinya mudah yaitu memasukan code berikut pada setiap postback, enaknya sih dimasukan ke event Page_Load sehingga perlakuan ini akan tetap melekat pada setiap request

   Response.CacheControl = "no-cache";
   Response.AddHeader("Pragma", "no-cache");
   Response.Expires = -1;

Dengan begitu, tidak ada yang namanya loading dari cache. Untuk asp.net mvc, caranya agak berbeda, karena konsepnya aja dah beda. Anda harus meletakkan code diatas pada event OnActionExecuting (override dari class Controller). Sehingga code yang didapatkan adalah

  protected override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    if (Request.IsAjaxRequest())
    {
         Response.CacheControl = "no-cache";
         Response.AddHeader("Pragma", "no-cache");
         Response.Expires = -1;
       }
       base.OnActionExecuting(filterContext);
    }
  }

Bedanya dari kedua code diatas adalah, Webform tidak dapat mengidentifikasi request yang dimaksud adalah cache atau bukan, sebaliknya, asp.net mvc dengan sebuah extension function dapat mengidentifikasi apakah request tersebut ajax atau bukan.

Categories: Programming Tags: ,

User Control dan Parent ViewState

March 20th, 2009 ayah No comments

Tadi kebetulan ketemu kasus. Jadi gini, ada aplikasi ASP.NET 2.0 dimana loading contentnya semua diambil secara dinamis. Contentnya sendiri di load dengan cara memasukan string ke ViewState. Hmm…agak unik sih karena biasanya gw kalo mo naro referensi content selalu mengacu ke querystring :D biar gak ribet.

Ini contoh Event Page_Load yang ada di Default.aspx Page sebagai master container

public void Page_Load(obj sender,EventArgs e){
  /** check apakah referensi control sudah ada di Viewstate **/
  if (ViewState["Control"] != null){
     MainContent.Controls.Clear(); /** Hilangin semua control dulu **/
     /** add to maincontent **/
     MainContent.Controls.Add(LoadControl(ViewState["Control"].ToString()));   }
}

Nah sekarang ada pertanyaan.

Gimana caranya untuk mengakses viewstate yang ada di Parent Page melalui UserControl ?

Jawabannya….binun juga. Karena gw dah terbiasa untuk memasukan referensi ke QueryString daripada ViewState. Tapi…..om Google punya beberapa jawabannya

1. Dengan cara membuat public properties di Parent Page, dengan cara itu, properties dapat diakses dengan mudah dari setiap childnya

  public string LoadedControl{get{return ViewState["Control"].ToString();}}

Dari User Control, cara penggunaan menjadi

  public void Test(){
     string control = ((ParentPageType)Page).NameOfProperties;
     MainControl.Controls.Add(LoadControl(control));
  }

Tapi ….. Tapi lagi….Tapi Lagi…..CMIIW, ini hanya berlaku kalau project yang digunakan adalah Web Application Project bukan Website Project. Karena pada Web Application Project, semua sudah menjadi Typed Safe dan dapat dicast. Kalau di website hal ini bisa saja dikerjakan tapi perlu effort lebih (next time ya kita bahasnya)

2. Kalo yang ini lebih gampang, masukin aja ke MasterPage, tentukan ContentPage nya, masukin Page yang mau pake, definisikan ContentPlaceHoldernya….Selesai deh. Lebih lengkapnya cek MasterPage

Good Luck

Categories: Programming Tags: , ,

Finally released ASP.NET MVC

March 19th, 2009 ayah No comments

Akhirnya asp.net mvc keluar!!! cihuyyy…penantian lama setelah pertama kali keluar sebagai CTP pada tanggal 10 Desember 2007, dan kemarin tanggal 17 Maret 2009 released sebagai versi final 1.0. Silahkan unduh ke download link

Gambaran sekilas mengenai ASP.NET MVC (diambil dari Wikipedia)

The ASP.NET MVC Framework is a Model-view-controller framework which Microsoft is adding to ASP.NET.
It allows software developers to build a Web application as a composition of three roles: Model, View and Controller. A Model represents the state of a particular aspect of the application. Frequently, a model maps to a database table with the entries in the table representing the state of the table.
A Controller handles interactions and updates the model to reflect a change in state of the application. A View extracts necessary information from a model and renders a user interface to display that.[1]

The ASP.NET MVC Framework couples the models, views, and controllers using interface-based contracts, thereby allowing each component to be easily tested independently.
By default, the view engine in the MVC framework uses regular .aspx pages to design the layout of the user interface pages onto which the data is composed.
However, different View Engines can be used (for example, you can create a View Engine based on XSLT files).[2]
Additionally, rather than the default ASP.NET postback model, any interactions are routed to the controllers using the ASP.NET 3.5 SP1 Routing mechanism. Views can be mapped to REST-friendly URLs.[1]

Bagi yang belom pernah make ASP.NET MVC, silahkan cek ke Tutorial.
Ini beberapa link tentang perbedaan ASP.NET MVC vs WebForm

Categories: Programming Tags: , , ,