lördag 7 december 2013

IIFE i Javascript

I Javascript finns något man kallar IIFE (immediately invoked function expression) vilket innebär att det är en funktion, precis som vilket Javascript-funktion som helst, men den körs direkt vid sidladdning, och inte genom ett anrop exempelvis genom att klicka på en knapp eller liknande.
Fördelen är att alla variabler lever endast inne i funktionen, även det i.o.f. precis som vanligt men det är användbart när man vill ha kod på en sida som ska köras direkt vid sidladdning och inte råka "krocka" med andra variabelnamn etc. på sidan.

 <script>  
 // Detta är ett "Immediately-Invoked Function" uttryck  
 (function() {  
   var foo = "Hejsan";  
 })();  
 alert(foo); // undefined!  
 </script>  

söndag 20 oktober 2013

Gör en egenskap read-only i EPiServer

Gör en Custom Property Type som du kallar PropertyReadOnlyString som ärver av PropertyString. Lägg till ett "disabled" attribut när Edit Control skapas. Samma kan göras för PropertyLongString, PropertyNumber, etc.

Detta behöver göras i CreateEditControls() för din kontroll klass.

 public override void CreateEditControls()  
 {  
 this.EditControl.Attributes.Add("disabled", "disabled");  
 }  

tisdag 3 september 2013

WebAPI i WebForms, Visual Studio 2010 .NET 4.0

Jag sökte runt för att hitta hur man sätter upp WebAPI i ett WebForms-projekt och hittade en del sidor som pekade på samma sätt:

 using System.Web.Http;  
 RouteTable.Routes.MapHttpRoute(  
   name: "DefaultApi",  
   routeTemplate: "api/{controller}/{id}",  
   defaults: new { id = System.Web.Http.RouteParameter.Optional }  
   );  


Jag hade stora problem med att fatta var RouteTable.Routes.MapHttpRoute kom ifrån, trodde att det var System.Web.Http såklart men icke?!

Till slut kom jag på genom att studera ett annat fungerande WebAPI-project att jag skulle skriva:

 GlobalConfiguration.Configuration.Routes.MapHttpRoute(  
        name: "DefaultApi",  
        routeTemplate: "api/{controller}/{id}",  
        defaults: new { id = System.Web.Http.RouteParameter.Optional }  
        );  


Observera också att du först via NuGet Package Console Manager måste ha installerat:
Install-Package AspNetWebApi