tisdag 6 november 2012

Sveriges bästa systemutvecklare 2012

Inte mycket för att tävla i kompetens och prestation inom yrkeslivet, men denna lista från IDG.se ger ändå en intressant bild av vad andra utvecklare arbetar med.
Jag har själv haft förmånen att få arbeta med Joel Abrahamsson (plats 8, plats 5 år 2011) som är en mycket trevlig och kompetent utvecklare inom .NET och EPiServer.


Se hela listan här.

måndag 5 november 2012

Cache in .NET MVC

Att sätta cache på en sida eller en del av en sida i MVC görs på samma sätt som i WebForms - via attribut i koden på controllerklassen:


 public class HomeController : Controller  
 {  
   //Cache page for "Duration" amount of seconds  
   [OutputCache(Duration = 5, VaryByParam = "none")]  
   public ActionResult Index()  
   {  
    // Write your code here  
    return View();  
   }  
 }  


Om man vill ange flera parameternamn i VaryByParam ska de åtskiljas av semikolon.

DropDownList in MVC

Ett litet exempel på hur man implementerar en DropDownList i .NET MVC med Razor syntax så det ser ut enligt nedan. Jag visar också hur man loopar igenom objekten i en foreach-loop:


I controller-metoden har jag en lista av klasstypen "Room".

 public ActionResult Index(){  
  List<Room> myRoomList = new List<Room>() {  
  new Room() { Roomname = "Horror room", Height = 5 },  
  new Room() { Roomname = "Death room", Height = 6 }  
  };  
  SelectList myList = new SelectList(myRoomList, "Height", "Roomname");  
  ViewBag.DropdownRoomList = myList;  
  return View(myRoomList);  
 }  


Filen för vyn ser ut enligt följande:

 @model IList<DropDownListTestProject.Models.Room>  
 @{  
   ViewBag.Title = "DropDownList test";  
 }  
 @foreach (var amodel in Model)  
 {  
   @: Height of @amodel.Roomname is @amodel.Height metres  
   <br />  
 }  
 <br />  
 @Html.DropDownList("RoomHeight", (SelectList)ViewBag.DropdownRoomList)  

lördag 3 november 2012

Chicken Tikka Masala

4 personer


  • 500 gram kycklingfiléer (bröst el lår)
  • 1 st gul lök
  • 1 st vitlöksklyfta
  • 1 msk färsk ingefära, finhackad
  • 1 st påse tikka masala-krydda (40 g)
  • 1,5 dl sötmandel
  • 400 gram krossade tomater
  • 1 dl vispgrädde
  • 1 dl matyoghurt (10 %)
  1. Skär kycklingfiléerna (om det är bröst) i bitar, ca 4 cm. Strimla lök och vitlök. Bryn i smör- & rapsolja i stekpanna eller kastrull. Salta och peppra.
  2. Blanda i ingefära, tikka masala-krydda, sötmandel och krossade tomater. Låt koka under lock ca 10 minuter.
  3. Ta ur kycklingbitarna och lägg på ett fat. Mixa såsen med stavmixer eller i matberedare tills den blir nästan slät. Lägg i kycklingen igen och tillsätt grädde och yoghurt. Låt koka ytterliggare 2 minuter, men akta så det inte bränner i botten!
  4. Servera med basmatiris, en sallad och nygräddade naan-bröd!

söndag 28 oktober 2012

Singleton in C#

En singleton i C# kan se ut något i stil med följande:

 public sealed class Singleton  
 {  
   private static Singleton instance = null;  
   private static readonly object padlock = new object();  
   private Singleton()  
   {  
   }  
   public static Singleton Instance  
   {  
     get  
     {  
       lock (padlock)  
       {  
         if (instance==null)  
         {  
           instance = new Singleton();  
         }  
         return instance;  
       }  
     }  
   }  
 }  


Eller med hjälp av klassen Lazy<T>():

 public class Singleton  
 {  
  private readonly static Lazy _instance = new Lazy(() => new Singleton());  
  public static Singleton Instance  
  {  
  get  
  {  
   return _instance.Value;  
  }  
  }  
 }  


Läs mer om singleton på denna sida:
http://www.yoda.arachsys.com/csharp/singleton.html

EnableViewState - true or false?

När är det nödvändigt att aktivera eller avaktivera EnableViewState på sidor och kontroller?
Bra info på denna länk om detta.

AutoEventWireup - true or false?

Klockren info på nedanstående länk om ordningsföljden på hur sidors/kontrollers metoder parsas.

http://hockeswe.blogspot.se/2007/07/autoeventwireuptrue.html


TemplateControl.HookUpAutomaticHandlers (vilken anropas under kontrollens OnInit bland annat) kommer om AutoEventWireup=true att försöka hitta följande metoder:

Om kontrollen är Page:

Page_PreInit
Page_PreLoad
Page_LoadComplete
Page_PreRenderComplete
Page_InitComplete
Page_SaveStateComplete

För alla TemplateControls:

Page_Init
Page_Load
Page_DataBind
Page_PreRender
Page_Unload
Page_Error
Page_AbortTransaction eller om den inte finns; OnTransactionAbort
Page_CommitTransaction eller om den inte finns; OnTransactionCommit

Detta görs i metoden TemplateControl.GetDelegateInformationWithNoAssert().