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

onsdag 28 november 2012

Web API Dependency Resolver

Denna artikel förklarar på ett bra sätt hur man använder Dependency Resolver i en MVC Web API Controller-klass.

Web API för nybörjare

Denna artikel ger en bra start att förstå Web API som introducerades i .NET MVC 4, och sedan även gå vidare att läsa denna artikel.

måndag 26 november 2012

Enkelt jQuery Ajax anrop i MVC

Att med hjälp av jQuery/Ajax anropa en C#-metod i ett MVC-projekt som returnerar Json är enkelt. I följande exempel ligger metoden i en controllerklass som heter HomeController, vilket ger URL:en /home/helloworld/ att anropa.


 public ActionResult HelloWorld()  
 {  
  return Json(new { Firstpart = "Hello", Secondpart = "World" }, JsonRequestBehavior.AllowGet);  
 }  


På sidan som ska anropa metoden har jag en DIV med id="responseResult" och lägger följande jQuery-kod.

 $(document).ready(function () {  
     $.ajax({  
       url: '/home/helloworld',  
       success: function (data) {  
         $('#responseResult').html('Resultat: ' + data.Firstpart + ' ' + data.Lastpart).delay(2000).fadeIn('slow');  
       },  
       error: function (data) {  
         alert('Error: Ajax call failed.');  
       }  
     });  
   });  


Som bonus la jag till en fade-effekt efter 2 sekunder på resultatet. 

Om man bara vill returnera en vanlig sträng kan koden i HelloWorld() se ut:

 public ActionResult HelloWorld()  
 {  
  return Content("Hello World");  
 }  


Då skrivs resultatet ut med endast "data" såhär:

 $(document).ready(function () {  
     $.ajax({  
       url: '/home/helloworld',  
       success: function (data) {  
         $('#responseResult').html('Resultat: ' + data).delay(2000).fadeIn('slow');  
       },  
       error: function (data) {  
         alert('Error: Ajax call failed.');  
       }  
     });  
   });  

fredag 16 november 2012

SimpleMembershipProvider WebSecurity.InitializeDatabaseConnection

Kom i kontakt med autentisering med hjälp av WebMatrix.WebData.SimpleMembershipProvider för att sköta inloggning och administration av användarkonton, men man gör det helst med hjälp av hjälpklassen WebSecurity.

Skapar man ett nytt default MVC 4 projekt i Visual Studio 2012 så skapas allt detta upp åt dig men med en lokal databasfil.
Om man som jag direkt vill ändra detta till att fungera mot sin SQL Server databas är det enkelt. Dock stötte jag på ett litet problem direkt om hur connectionsträngen skulle se ut för att metoden WebSecurity.InitializeDatabaseConnection() ska fungera.

Jag hade glömt att sätta attributet "providerName" till "System.Data.SqlClient":

<add name="MinDatabasConnection" providerName="System.Data.SqlClient" connectionString="Data Source=minDBserver\sqlexpress2012;Initial Catalog=DatabasNamnet;User ID=minDBuser;Password=*****" />

Sedan om inte de korrekta tabellerna redan existerar (vid ett nystartat projekt) så kan de begäras att skapas automatiskt via "autoCreateTable: true":

WebSecurity.InitializeDatabaseConnection("MinDatabasConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);

söndag 11 november 2012

XML serialisering av C# objekt

Detta exempel är en bra början att lära sig hur XML serialisering fungerar.
Om man t.ex. vill spara ner ett eller flera objekt till en XML-fil för att senare läsa tillbaka den igen.