<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Robert Folkesson</title><link>http://blogs.msdn.com/robf/default.aspx</link><description>Roses are &lt;font style='color:#FF3333'&gt;#FF0000&lt;/font&gt;, &lt;br&gt;
Violets are &lt;font style='color:#00C'&gt;#0000FF&lt;/font&gt;,  &lt;br&gt;
All my base are &lt;br&gt; belong to you.</description><dc:language>sv-SE</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Så skapar du en Jump list i Windows 7</title><link>http://blogs.msdn.com/robf/archive/2009/10/22/s-skapar-du-en-jump-list-i-windows-7.aspx</link><pubDate>Thu, 22 Oct 2009 09:16:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9911215</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9911215.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9911215</wfw:commentRss><description>&lt;p&gt;En Jump list i Windows 7 är ett sätt att skapa en intuitiv snabbare navigering för användaren direkt åtkomlig i aktivitetsfältet (Taskbar). I och med införandet av Jump list kan man säga att alla applikationer har fått möjlighet till en egen mini-startmeny som du som utvecklare kan anpassa.&lt;/p&gt;  &lt;p&gt;Ett exempel är den Jump List som Windows Live Messenger-klienten erbjuder:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenJumplistiWindows7C_14E49/MSNJumpList_4.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="MSNJumpList" border="0" alt="MSNJumpList" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenJumplistiWindows7C_14E49/MSNJumpList_thumb_1.png" width="264" height="355" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Här är en översikt över vilka delar en Jump list kan innehålla:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenJumplistiWindows7C_14E49/image_4_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image_4" border="0" alt="image_4" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenJumplistiWindows7C_14E49/image_4_thumb.png" width="628" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En Jump List kan alltså innehålla: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Destinationer, eller sökvägar, till information eller filer.      &lt;br /&gt;      &lt;br /&gt;Dessa delas in i       &lt;ul&gt;       &lt;li&gt;en fastlåst sektion (Pinned category), &lt;/li&gt;        &lt;li&gt;en sektion med nyligen använda (Known categories) &lt;/li&gt;        &lt;li&gt;eventuella egendefinierade sektioner (Custom Categories). &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Verbi form av ‘Tasks’, d.v.s. uppgifter som kan utföras av användaren. En typisk sådan kan t.ex. vara att spola fram en låt i en mediaspelare. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Som utvecklare kan du använda dig av det API som aktivitetsfältet exponerar genom ett antal COM–interface för att styra funktionaliteten i din applikations Jump List.&lt;/p&gt;  &lt;h3&gt;Application ID&lt;/h3&gt;  &lt;p&gt;Till att börja med så är det rekommenderat att du ger din applikation ett ‘Application ID’. Applikations ID:t används för att gruppera applikationer och processer i aktivitetsfältet. Alla applikationer och processer som har samma Applikations ID kommer att dela Jump List och aktivitetsfältsikon med varandra. Om du t.ex. har flera instanser av Internet Explorer igång så kommer dessa visas som en ikon i aktivitetsfältet och de kommer också att ha en gemensam Jump List där du ser de senaste adresserna som du surfat till.&lt;/p&gt;  &lt;p&gt;Om du inte ger din applikation ett ID kommer operativsystemet att automatiskt tilldela ett ID till applikationen. Men rekommenderat är alltså att du själv kontrollerar detta för att kunna styra grupperingen i aktivitetsfältet. ID:t används också för att registrera din applikation för kända filtyper – för att automatiskt kunna hålla reda på och visa senast öppnade dokument i Jump List.&lt;/p&gt;  &lt;p&gt;Se bloggposten &lt;a href="http://windowsteamblog.com/blogs/developers/archive/2009/06/18/developing-for-the-windows-7-taskbar-application-id.aspx" target="_blank"&gt;‘Developing for the Windows 7 Taskbar – Application ID’&lt;/a&gt; för hur du skapar ett Application ID.&lt;/p&gt;  &lt;h3&gt;Destinations&lt;/h3&gt;  &lt;p&gt;För att din applikation ska kunna öppna destinationer/sökvägar som visas i Jump List så måste &lt;a href="http://msdn.microsoft.com/en-us/library/bb776870(VS.85).aspx" target="_blank"&gt;en registrerad ‘file handler’ finnas för den aktuella filtypen i registret&lt;/a&gt;. Det innebär inte att din applikation måste vara ‘default handler’ för den aktuella filtypen, men en registrering måste alltså finnas där.&lt;/p&gt;  &lt;p&gt;När din applikation är registrerad för en viss filtyp kommer filer som användare öppnar via filutforskaren genom dubbelklick eller som öppnas via Common File Dialog (CFD) automatiskt att läggas till listan över nyligen använda ‘Recent’ – i applikationens Jump List. &lt;/p&gt;  &lt;p&gt;Om du vill skapa en egen kategori med en anpassad lista kan du göra det genom ett interface som heter ICustomDestinationList. Bloggposten ‘&lt;a href="http://windowsteamblog.com/blogs/developers/archive/2009/06/25/developing-for-the-windows-7-taskbar-jump-into-jump-lists-part-2.aspx" target="_blank"&gt;Developing for the Windows 7 Taskbar – Jump into Jump Lists – Part 2’&lt;/a&gt; går igenom det i detalj med kodexempel i C++ och C#. &lt;/p&gt;  &lt;h3&gt;Tasks&lt;/h3&gt;  &lt;p&gt;Som du såg i översiktsbilden ovan så kan du också skapa ‘Tasks’, alltså verb som är direktingångar till funktionalitet i din applikation. I exemplet Windows Live Messenger ovan så är det endast ‘Tasks’ som användaren kommer åt – ändra status, logga ut, navigera till MSN m.m. &lt;/p&gt;  &lt;p&gt;Ett ‘Task’ är ett sätt att erbjuda ett gränssnitt för användaren att direkt från Jump List kunna köra din applikations exekverbara fil, på samma sätt som om du hade anropat den från en kommandoprompt med tillhörande argument.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://windowsteamblog.com/blogs/developers/archive/2009/07/02/developing-for-the-windows-7-taskbar-jump-into-jump-lists-part-3.aspx" target="_blank"&gt;‘Developing for the Windows 7 Taskbar – Jump into Jump Lists – Part 3’&lt;/a&gt; innehåller bra exempel i C++ och C# på hur du lägger till egna ‘Tasks’ för din applikation.&lt;/p&gt;  &lt;p&gt;Om du utvecklar i .NET så rekommenderas också varmt att du laddar hem &lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack" target="_blank"&gt;Windows® API Code Pack for Microsoft® .NET Framework&lt;/a&gt; som innehåller wrappers runt bl.a. de COM-interface som du använder för att skapa och hantera Jump List-objekt. Den innehåller också en mängd färdiga bra demoexempel som du kan lära ifrån.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911215" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/robf/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/robf/archive/tags/Win32/default.aspx">Win32</category><category domain="http://blogs.msdn.com/robf/archive/tags/C_2B002B00_/default.aspx">C++</category></item><item><title>Visual Studio 2010 Beta 2 tillgänglig samt MSDN Relaunch</title><link>http://blogs.msdn.com/robf/archive/2009/10/20/visual-studio-2010-beta-2-tillg-nglig-samt-msdn-relaunch.aspx</link><pubDate>Tue, 20 Oct 2009 10:36:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909809</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/robf/comments/9909809.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9909809</wfw:commentRss><description>&lt;p&gt;Igår gjordes Visual Studio 2010 Beta 2 tillgänglig för MSDN-prenumeranter, du hittar den under ‘MSDN Subscriber downloads’.&lt;strike&gt; Har du inte tillgång till MSDN-prenumeration får du vänta ytterligare några dagar innan den görs publikt tillgänglig.&lt;/strike&gt; &lt;strong&gt;EDIT: &lt;/strong&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-gb/try/default.mspx" target="_blank"&gt;alla versioner av Visual Studio 2010 Beta 2 finns nu tillgängliga här.&lt;/a&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Vi passade på att fira detta genom att göra &lt;a href="http://channel9.msdn.com/posts/buzzfrog/MSDN-Radio-20-Okt--MSDN-Relaunch/" target="_blank"&gt;senaste MSDN Radio till en Visual Studio 2010-special&lt;/a&gt;, där vi fick hjälp av vår Tools &amp;amp; MSDN-expert Simon Holm att reda ut vad de olika versionerna av Visual Studio kommer att heta och innehålla samt vilka uppgraderingsvägar som finns tillgängliga.    &lt;br /&gt;     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VisualStudio2010Beta2tillgngligsamtMSDNR_B15F/logo_msdn_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="logo_msdn" border="0" alt="logo_msdn" align="right" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VisualStudio2010Beta2tillgngligsamtMSDNR_B15F/logo_msdn_thumb.png" width="91" height="27" /&gt;&lt;/a&gt;I samband med att Visual Studio 2010 Beta 2 släpptes så sjösattes också den nya strukturen och designen av våra MSDN-sajter. Det är ett arbete som vårt webbteam sysslat med under en tid där man också tagit fram en ny stilig logotyp för MSDN. Kolla in &lt;a href="http://www.msdn.se" target="_blank"&gt;www.msdn.se&lt;/a&gt; för den uppdaterade looken.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909809" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/robf/archive/tags/MSDN/default.aspx">MSDN</category></item><item><title>Du är inbjuden till Windows 7 lanseringen</title><link>http://blogs.msdn.com/robf/archive/2009/10/13/du-r-inbjuden-till-windows-7-lanseringen.aspx</link><pubDate>Tue, 13 Oct 2009 09:02:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9906516</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9906516.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9906516</wfw:commentRss><description>&lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/DurinbjudentillWindows7lanseringen_9B54/clip_image001_2.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/DurinbjudentillWindows7lanseringen_9B54/clip_image001_thumb.gif" width="244" height="52" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Den 23 oktober lanserar Microsoft Windows 7 &lt;a href="www.tekniskamuseet.se" target="_blank"&gt;på Tekniska museet i Stockholm&lt;/a&gt;. I samarbete med Handelskammaren och Företagarna presenteras en komplett orgie i teknik under en heldag. Tillsammans med&amp;#160; &lt;b&gt;Dell, Dustin, Samsung, HP, Lenovo, Acer och Asus&lt;/b&gt;&amp;#160; visas det senaste inom PC och Netbooks med Windows 7, skrivare, kameror, mobiltelefoner, skärmar, mjukvara, spel m.m. Det kommer också finnas folk på plats som svarar på frågor om Windows 7 och hårdvara.&lt;/p&gt;  &lt;p&gt;Programmet ser ut så här (det är fri entré &amp;amp; kostnadsfria seminarier):&lt;/p&gt;  &lt;p&gt;&lt;b&gt;10.00-20.00:&lt;/b&gt; Öppet hus     &lt;br /&gt;&lt;b&gt;10.00-11.00:&lt;/b&gt; Småföretagarfokus med Anna-Stina Nordmark VD på Företagarna &amp;amp;     &lt;br /&gt;Per Adolfsson, direktör Microsoft om hur du som företagare kan frigöra tid, fokusera på kärnverksamheten, öka din konkurrenskraft och finna nya affärsmöjligheter med ett bra IT-stöd.     &lt;br /&gt;&lt;b&gt;10.00-11.00: &lt;/b&gt;Utbildningsfokus hur tekniken kan påverka produktiviteten i utbildningen och minska tiden för administrationen.     &lt;br /&gt;&lt;b&gt;11.00 och varje halvtimme:&lt;/b&gt; Demo-jams med experter som visar funktioner för arbete, utbildning och hemmet.     &lt;br /&gt;&lt;b&gt;15.00-16.00:&lt;/b&gt; Studenter högre utbildning, den digitala livsstilen.     &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Plats:&lt;/b&gt; Tekniska museet, Museivägen 7, Stockholm.     &lt;br /&gt;&lt;i&gt;Viska ”Microsoft” i receptionen, så går du in gratis (alternativt överraska med att kunna det hemliga handtecknet :-)&lt;/i&gt;     &lt;br /&gt;&lt;b&gt;Lokal:&lt;/b&gt; Södra Stallet&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.se/tekniska " target="_blank"&gt;Anmäl dig till Windows 7-lanseringen här&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9906516" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>ASP.NET MVC 2 Preview 2</title><link>http://blogs.msdn.com/robf/archive/2009/10/05/asp-net-mvc-2-preview-2.aspx</link><pubDate>Mon, 05 Oct 2009 18:28:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9903277</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/robf/comments/9903277.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9903277</wfw:commentRss><description>&lt;p&gt;Nyligen släpptes &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d3f06bb9-5f5f-4f46-91e9-813b3fce2db1&amp;amp;displaylang=en" target="_blank"&gt;ASP.NET MVC 2 Preview 2&lt;/a&gt;. Denna version lägger sig snällt och prydligt jämsides med ASP.NET MVC 1.0 vilket gör att den inte stökar med dina befintliga projekt. &lt;/p&gt;  &lt;p&gt;ASP.NET MVC Preview 2 finns idag endast i en version för Visual Studio 2008 SP1/.NET 3.5 SP1. Där får du tillgång till en helt ny mall för ASP.NET MVC 2-projekt. Den kommer också att finnas inbyggd i den kommande Beta 2-versionen av Visual Studio 2010.&lt;/p&gt;  &lt;p&gt;En av de riktigt spännande nyheterna i ASP.NET MVC 2 Preview 2 är möjligheten att ange valideringsregler i din domänmodell med hjälp av System.ComponentModel.DataAnnotations. Det bygger på att du med hjälp av en partiell klass anger valideringsregler för olika egenskaper på dina domänklasser. Reglerna valideras sedan på klienten med hjälp av jQuery Validation-biblioteket och användaren får en direkt återkoppling - utan någon postning tillbaka till servern.&lt;/p&gt;  &lt;p&gt;I följande exempel har jag angett en regel som säger att egenskapen VacationsHours på Employee-klassen måste ha ett värde mellan 0 och 80:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Web;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.ComponentModel.DataAnnotations;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Mvc2FirstLook.Models&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// Metadataklass för Employee&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    [MetadataTypeAttribute(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(EmployeeMetadata))]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Employee&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;internal&lt;/span&gt; &lt;span style="color: #0000ff"&gt;sealed&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; EmployeeMetadata&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #008000"&gt;//  Privat konstruktor, metadataklasser ska inte instansieras&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; EmployeeMetadata()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #008000"&gt;// Tillåt endast värden mellan 0 och 80&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            [Range(0, 80, ErrorMessage=&lt;span style="color: #006080"&gt;&amp;quot;VacationHours måste vara mellan 0 och 80&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;short&lt;/span&gt; VacationHours;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;På klientsidan i min vy lägger jag till en referens till Javascript-filerna jquery-1.3.2.js, jquery.validate.js och MicrosoftMvcJQueryValidation.js. Jag behöver också slå på valideringsfunktionen genom att sätta EnableClientValidation: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT&lt;/strong&gt;: Jon tipsar om att lägga Javascript-filer sist i HTML-koden för att möjliggöra parallell nedladdning av refererade bildfiler (om dessa ligger på olika hostnames eller domäner). I mitt enkla exempel hade jag inga bilder så då gör det ingen skillnad, men det är ett mycket bra tips för riktiga lösningar. Ett annat tips är att använda sig av ett s.k. Content Delivery Network för att servera filer som inkluderas i många sidor – t.ex. scriptfiler. Microsoft har nyligen lanserat &lt;a href="http://www.asp.net/ajax/cdn/" target="_blank"&gt;Microsoft Ajax CDN&lt;/a&gt; som innehåller både ASP.NET AJAX- och jQuery-scriptfiler. Dessutom borde jag naturligtvis ha pekat på den &lt;a href="http://en.wikipedia.org/wiki/Minification_(programming)" target="_blank"&gt;minifierade&lt;/a&gt; jQuery-filen (den ligger också på Microsoft Ajax CDN). Fler bra prestandatips hittar du i &lt;a href="http://developer.yahoo.com/performance/rules.html" target="_blank"&gt;Yahoos Best Practices for Speeding Up Your Web Site&lt;/a&gt;.

  &lt;br /&gt;… &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;script&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt; &lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;script&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt; &lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;../../Scripts/jquery.validate.js&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;script&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt; &lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;../../Scripts/MicrosoftMvcJQueryValidation.js&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;h2&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Edit&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;h2&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; Html.ValidationSummary(&lt;span style="color: #a31515"&gt;&amp;quot;Edit was unsuccessful. Please correct the errors and try again.&amp;quot;&lt;/span&gt;) &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt; Html.EnableClientValidation(); &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt; &lt;span style="color: blue"&gt;using&lt;/span&gt; (Html.BeginForm()) {&lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;fieldset&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
      &lt;br /&gt;

      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;legend&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Fields&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;legend&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
      &lt;br /&gt;

      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; Html.Hidden(&lt;span style="color: #a31515"&gt;&amp;quot;EmployeeID&amp;quot;&lt;/span&gt;, Model.EmployeeID) &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;label&lt;/span&gt; &lt;span style="color: red"&gt;for&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;NationalIDNumber&amp;quot;&amp;gt;&lt;/span&gt;NationalIDNumber:&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; Html.TextBox(&lt;span style="color: #a31515"&gt;&amp;quot;NationalIDNumber&amp;quot;&lt;/span&gt;, Model.NationalIDNumber) &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; Html.ValidationMessage(&lt;span style="color: #a31515"&gt;&amp;quot;NationalIDNumber&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;) &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;label&lt;/span&gt; &lt;span style="color: red"&gt;for&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Title&amp;quot;&amp;gt;&lt;/span&gt;Title:&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; Html.TextBox(&lt;span style="color: #a31515"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;, Model.Title)&lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; Html.ValidationMessage(&lt;span style="color: #a31515"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;)&lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;label&lt;/span&gt; &lt;span style="color: red"&gt;for&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;VacationHours&amp;quot;&amp;gt;&lt;/span&gt;VacationHours:&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; Html.TextBox(&lt;span style="color: #a31515"&gt;&amp;quot;VacationHours&amp;quot;&lt;/span&gt;, Model.VacationHours) &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt; Html.ValidationMessage(&lt;span style="color: #a31515"&gt;&amp;quot;VacationHours&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;) &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;input&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;submit&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Save&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 9pt; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #a31515; font-size: 9pt; mso-no-proof: yes"&gt;p&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: blue; font-size: 9pt; mso-no-proof: yes"&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;fieldset&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; font-size: 9pt; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/span&gt; } &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-size: 9pt"&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;… 
  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Om användaren nu sätter ett felaktigt värde i VacationHours visas meddelandet direkt:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/ASP.NETMVC2Preview2_E468/clientvalidationASPNETMVC_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clientvalidationASPNETMVC" border="0" alt="clientvalidationASPNETMVC" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/ASP.NETMVC2Preview2_E468/clientvalidationASPNETMVC_thumb.png" width="605" height="242" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Det som jag tycker är riktigt coolt med DataAnnotations är att det är samma teknik för att ange valideringsregler som används i &lt;a href="http://www.asp.net/dynamicdata/" target="_blank"&gt;ASP.NET Dynamic Data&lt;/a&gt; och i &lt;a href="http://code.msdn.microsoft.com/RiaServices" target="_blank"&gt;.NET RIA Services&lt;/a&gt;. Det innebär att du kan ha en enda gemensam plats för alla dina valideringsregler och sedan få dessa regler validerade i t.ex. en Silverlight-klient eller en HTML-vy genererad av MVC-ramverket.&lt;/p&gt;

&lt;p&gt;Men – det skulle ju inte vara ASP.NET MVC om det inte också gick att skjuta in sin egen funktionalitet för validering :-)&amp;#160; MVC-ramverket har i Preview 2 fått en providermodell för där du kan stoppa in &lt;a href="http://codingndesign.com/blog/?p=76" target="_blank"&gt;din egen Model Validation Provider&lt;/a&gt;, om den inbyggda inte skulle motsvara dina krav.&lt;/p&gt;

&lt;p&gt;En annan stor nyhet i Preview 2 är något som kallas ‘Area’ som kan användas för att förenkla struktureringen av större sajter rent kodmässigt. Mikael Söderström har skrivit en utmärkt artikel om &lt;a href="http://weblogs.asp.net/mikaelsoderstrom/archive/2009/10/02/areor-i-asp-net-mvc-2.aspx" target="_blank"&gt;Area i ASP.NET MVC 2 Preview 2&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9903277" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Webbutveckling/default.aspx">Webbutveckling</category><category domain="http://blogs.msdn.com/robf/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category></item><item><title>Lär dig utveckla för Windows 7 med Windows 7 Training Kit</title><link>http://blogs.msdn.com/robf/archive/2009/10/01/l-r-dig-utveckla-f-r-windows-7-med-windows-7-training-kit.aspx</link><pubDate>Thu, 01 Oct 2009 16:53:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9901839</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9901839.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9901839</wfw:commentRss><description>&lt;p&gt;Windows 7 Training Kit for Developers innehåller presentationer, hands-on labbar och demos som snabbt får dig på banan när det gäller Windows 7-utveckling. &lt;/p&gt;  &lt;p&gt;I träningspaketet kan du bland annat gå igenom följande nyheter som du kan utnyttja för att få dina applikationer att verkligen skina på Windows 7:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Aktivitetsfältet och s.k. Jumplist &lt;/li&gt;    &lt;li&gt;Bibliotek – s.k. ‘Libraries’ &lt;/li&gt;    &lt;li&gt;Multitouch &lt;/li&gt;    &lt;li&gt;Sensorer och Location &lt;/li&gt;    &lt;li&gt;Ribbon &lt;/li&gt;    &lt;li&gt;Trigger Start-tjänster &lt;/li&gt;    &lt;li&gt;Instrumentation och eventspårning &lt;/li&gt; &lt;/ul&gt; Applikationskompatibilitet är naturligtvis ett extremt viktigt område, materialet täcker in följande:   &lt;ul&gt;   &lt;li&gt;Versionskontroll &lt;/li&gt;    &lt;li&gt;UAC Data Redirect &lt;/li&gt;    &lt;li&gt;Session 0-isolering &lt;/li&gt;    &lt;li&gt;Installer-detektion &lt;/li&gt;    &lt;li&gt;User Interface Privilege-isolering &lt;/li&gt;    &lt;li&gt;Hög DPI-inställning &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;VIssa delar i träningspaketet kräver att du har &lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack" target="_blank"&gt;Windows Code Pack&lt;/a&gt; och &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=en" target="_blank"&gt;Windows 7 SDK&lt;/a&gt; installerat.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=1c333f06-fadb-4d93-9c80-402621c600e7&amp;amp;displaylang=en" target="_blank"&gt;Här laddar du hem Windows 7 Training Kit for Developers.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901839" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>TechDays 2010 - Örebro 23–24 mars</title><link>http://blogs.msdn.com/robf/archive/2009/09/28/techdays-2010-rebro-23-24-mars.aspx</link><pubDate>Mon, 28 Sep 2009 22:45:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9900425</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9900425.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9900425</wfw:commentRss><description>&lt;p&gt;Vi är i full färd med förberedelser inför TechDays 2010 och håller bland annat som bäst på att säkra upp både svenska och utländska toppnamn som talare. Boka in den 23 och 24 mars, och ställ in siktet på ännu ett fullspäckat svenskt evenemang för utvecklare, tekniker och IT-chefer.&lt;/p&gt; &lt;iframe height="350" src="http://91.189.45.77/robs/techdays2010/default.html" frameborder="no" width="480"&gt;&lt;/iframe&gt;  &lt;br /&gt;&lt;i&gt;Visible Earth imagery owned by NASA&lt;/i&gt;   &lt;br /&gt;  &lt;br /&gt;  &lt;p&gt;Om du bokar senast den 31 oktober så sparar du 1500 kr.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/sverige/techdays/about.aspx" target="_blank"&gt;Läs mer på techdays.se &amp;gt;&amp;gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9900425" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Teknik-orgie/default.aspx">Teknik-orgie</category><category domain="http://blogs.msdn.com/robf/archive/tags/TechDays2010/default.aspx">TechDays2010</category></item><item><title>Så skapar du en förloppsindikator för Windows 7 aktivitetsfält med .NET</title><link>http://blogs.msdn.com/robf/archive/2009/09/28/s-skapar-du-en-f-rloppsindikator-f-r-windows-7-aktivitetsf-lt-med-net.aspx</link><pubDate>Mon, 28 Sep 2009 08:40:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9900136</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9900136.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9900136</wfw:commentRss><description>&lt;p&gt;En av de många små nyheterna som gör Windows 7 så mycket trevligare att arbeta med är möjligheten att ha en “progress bar”, eller förloppsindikator (i ett försök att använda en hyfsad svensk översättning), i Windows 7 aktivitetsfält.&lt;/p&gt;  &lt;p&gt;Vad det handlar om är att kunna ge användare en direkt visuell återkoppling till att ett program arbetar med något och hur långt det har kommit. Ett bra exempel är filutforskaren som i Windows 7 visar hur mycket som återstår av en filkopiering:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenfrloppsindikatorfrWindows.NET_587/TaskbarProgress.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TaskbarProgress" border="0" alt="TaskbarProgress" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenfrloppsindikatorfrWindows.NET_587/TaskbarProgress_thumb.png" width="342" height="100" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I bilden ovan ser du hur kopieringen hunnit ungefär en tiondel vilket indikeras av den gröna stapeln. Genom en snabb blick ner på aktivitetsfältet kan du se om programmet arbetar, ungefär hur långt det kommit eller om det är klart - utan att behöva växla mellan öppna program. Klart smidigt!&lt;/p&gt;  &lt;p&gt;För att komma åt de nya API:erna i Windows 7 som .NET-utvecklare kan du använda dig av ett bibliotek med färdiga funktioner från Microsoft som heter &lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack" target="_blank"&gt;Windows API Code Pack for Microsoft .NET Framework&lt;/a&gt;. Där hittar du bland annat ett Shell-projekt som innehåller den statiska klassen Taskbar. Taskbar har en Progressbar-egenskap som du använder för visa pågående aktivitet i ditt program.&lt;/p&gt;  &lt;p&gt;Progressbar har ett CurrentValue och ett State. CurrentValue är ett värde mellan 0 och 100 som avgör hur långt programmet har kommit i arbetet, alltså hur långt stapeln ritas ut.&amp;#160; &lt;/p&gt;  &lt;p&gt;State är en enumeration som kan vara antingen Error, Indeterminate, NoProgress, Normal eller Paused:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenfrloppsindikatorfrWindows.NET_587/TaskbarButtonProgressState_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TaskbarButtonProgressState" border="0" alt="TaskbarButtonProgressState" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenfrloppsindikatorfrWindows.NET_587/TaskbarButtonProgressState_thumb.png" width="660" height="112" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Indeterminate används när du vill visa att det inte går att avgöra hur långt en process kommit, alltså ett obestämt tillstånd. När State är satt till Indeterminate visas en grön markering som rör sig i sidled över ikonen i en loop tills tillståndet ändras.&lt;/p&gt;  &lt;p&gt;Jag har skapat en enkel WPF-applikation som visar på olika tillstånd och hur förloppet indikeras i aktivitetsfältet:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenfrloppsindikatorfrWindows.NET_587/Taskbardemo1.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Taskbardemo1" border="0" alt="Taskbardemo1" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/SskaparduenfrloppsindikatorfrWindows.NET_587/Taskbardemo1_thumb.png" width="660" height="191" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-3e8866f3bde90965.skydrive.live.com/self.aspx/WPFTaskbarDemo1/WPFTaskbarDemo1.zip" target="_blank"&gt;Här kan du ladda hem WPFTaskbarDemo1&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9900136" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Microsoft lanserar WebsiteSpark-programmet för nya webbutvecklande företag</title><link>http://blogs.msdn.com/robf/archive/2009/09/24/microsoft-lanserar-websitespark-programmet-f-r-nya-webbutvecklande-f-retag.aspx</link><pubDate>Fri, 25 Sep 2009 00:50:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9899170</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9899170.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9899170</wfw:commentRss><description>&lt;p&gt;Idag annonserade Scott Guthrie ett nytt program (program som i något man kan anmäla sig till, inte mjukvara alltså ;-) - för att hjälpa nya webbutvecklande företag att komma igång snabbt och med väldigt låg kostnad.&lt;/p&gt;  &lt;p&gt;Med WebsiteSpark kan nystartade webbutvecklings- och webbdesignföretag få tillgång till både utvecklingsmiljö, designverktyg samt våra serverprodukter under 3 år mot en anmälningsavgift på 100 dollar.&lt;/p&gt;  &lt;p&gt;Företag sin går med i WebsiteSpark får tillgång till:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;3 licenser för Visual Studio 2008 Professional Edition &lt;/li&gt;    &lt;li&gt;1 licensen för Expression Studio 3 (med Expression Blend, Sketchflow och web) &lt;/li&gt;    &lt;li&gt;2 licenser för Expression Web 3 &lt;/li&gt;    &lt;li&gt;4 processor-licenser för Windows Web Server 2008 R2 &lt;/li&gt;    &lt;li&gt;4 processor-licenser för SQL Server 2008 Web Edition &lt;/li&gt;    &lt;li&gt;DotNetPanel control panel (för enklare administration av servrar) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/web/websitespark/" target="_blank"&gt;Här kan du läsa mer om WebsiteSpark-programmet och anmäla ditt företag.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9899170" width="1" height="1"&gt;</description></item><item><title>Ta del av vår interna diskussionslista om WPF</title><link>http://blogs.msdn.com/robf/archive/2009/09/23/ta-del-av-v-r-interna-diskussionslista-om-wpf.aspx</link><pubDate>Wed, 23 Sep 2009 22:44:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898615</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9898615.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9898615</wfw:commentRss><description>&lt;p&gt;Jamie Rodriguez på Microsoft publicerar lite då och då utdrag ur WPF Discussion – en intern teknisk diskussionslista som alla WPF-intresserade Microsoft:are är med i. &lt;/p&gt;  &lt;p&gt;Är du intresserad av att fördjupa kunskapen i WPF är det här ett bra ställe att snappa upp bra information direkt från produktgrupperna – som Jamie uttrycker det: “Raw, unedited, insightful and deep content…”. &lt;/p&gt;  &lt;p&gt;Ta del av &lt;a href="http://blogs.msdn.com/jaimer/archive/2009/09/22/wpf-discussion-090922.aspx" target="_blank"&gt;senaste WPF Discussion på Jamies blogg&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898615" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Mantacore CS - en modulär flerskiktad arkitektur med Silverlight</title><link>http://blogs.msdn.com/robf/archive/2009/09/16/mantacore-cs-en-modul-r-flerskiktad-arkitektur-med-silverlight.aspx</link><pubDate>Wed, 16 Sep 2009 17:29:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9895886</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/robf/comments/9895886.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9895886</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.mantacore.se/" target="_blank"&gt;Mantacore&lt;/a&gt; bygger webbaserade lösningar för försäkringsbranschen som hanterar kunder, produkter och affärsprocesser. När jag fick höra att de byggt sin senaste version av Mantacore CS med en Silverlight-klient skyndade jag mig dit för att intervjua Fredrik Cederberg, utvecklingschef samt Emil Bergvall och Håkan Boman som är ansvariga systemarkitekter.     &lt;br /&gt;    &lt;br /&gt;De gav mig en inblick i hur arkitekturen ser ut i ett modulärt uppbyggt system som har höga krav på skalbarhet, prestanda och att kundanpassningar ska vara så enkla som möjligt. &lt;/p&gt;  &lt;p&gt;Allt filmat i äkta Channel9-stil med en skakig handhållen kamera :) &lt;/p&gt;  &lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/MSDNSweden/Mantacore-CS-en-modulr-flerskiktad-arkitektur-med-Silverlight/" target="_blank"&gt;Filmen finns här.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9895886" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/robf/archive/tags/Arkitektur/default.aspx">Arkitektur</category></item><item><title>Seminarie om migrering från VB6</title><link>http://blogs.msdn.com/robf/archive/2009/09/16/seminarie-om-migrering-fr-n-vb6.aspx</link><pubDate>Wed, 16 Sep 2009 12:55:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9895776</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/robf/comments/9895776.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9895776</wfw:commentRss><description>&lt;p&gt;IDG &lt;a href="http://www.idg.se/2.1085/1.250522" target="_blank"&gt;publicerade en artikel&lt;/a&gt; i tisdags som tar upp att supporten för VB6 IDE har gått ut. Men det som jag tror många har missuppfattat är vad det egentligen innebär. Det är alltså &lt;em&gt;utvecklingsmiljön&lt;/em&gt; som inte supporteras längre. Exekveringsmiljön för VB6 finns installerad både i Windows Server 2008 och Windows 7 och &lt;a href="http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx" target="_blank"&gt;supporteras alltså fortfarande&lt;/a&gt;. Johan Lindfors har skrivit &lt;a href="http://blogs.msdn.com/johanl/archive/2009/09/14/kommentar-till-idg-massflytt-fr-n-visual-basic.aspx" target="_blank"&gt;en bra kommentar till artikeln här&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Vi ser ju helst att gamla applikationer och system migreras från VB så snabbt som möjligt, annars skjuter man ju bara kundernas problem framför sig. Så om du fortfarande har applikationer som kör i VB6-miljö är det definitivt hög tid att börja titta på en migrering till en modern miljö nu. &lt;/p&gt;  &lt;p&gt;Active Solution har genomfört ett antal migreringar från VB6 och håller seminarier om strategier och verktyg för en lyckad migrering. &lt;a href="http://www.activesolution.se/en/Seminarier/Migrering-fran-Visual-Basic1/" target="_blank"&gt;Anmäl ditt intresse här&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9895776" width="1" height="1"&gt;</description></item><item><title>Vad är nytt i Windows 7 för Gadget-utvecklare?</title><link>http://blogs.msdn.com/robf/archive/2009/09/15/vad-r-nytt-f-r-gadget-utvecklare-i-windows-7.aspx</link><pubDate>Tue, 15 Sep 2009 20:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9895487</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/robf/comments/9895487.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9895487</wfw:commentRss><description>&lt;P&gt;Gadget-plattformen från Windows Vista är inbyggd även i Windows 7 och alla API:er som fanns med i Vista finns kvar. Det innebär att en gadget som byggdes för Vista även bör fungera utan problem i Windows 7. &lt;/P&gt;
&lt;P&gt;Den största nyheten är att den ‘Sidebar’ som fanns i Vista har försvunnit. &lt;STRIKE&gt;Dina gadgets kommer alltså inte längre att kunna dockas fast i högerhörnet på skrivbordet&lt;/STRIKE&gt;.&amp;nbsp;Lite slarvigt formulerat, vad jag menade var att alla gadgets kan&amp;nbsp;läggas var som helst på skrivbordet och att den synliga 'Sidebar' där gadgets dockade fast i Vista inte längre är kvar. De kommer fortfarande kunna ha två olika storlekar som du väljer via menyn:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VadrnyttfrGadgetutvecklareiWindows7_10F46/gadgetsWin7_liten_2.png" mce_href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VadrnyttfrGadgetutvecklareiWindows7_10F46/gadgetsWin7_liten_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=gadgetsWin7_liten border=0 alt=gadgetsWin7_liten src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VadrnyttfrGadgetutvecklareiWindows7_10F46/gadgetsWin7_liten_thumb.png" width=244 height=138 mce_src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VadrnyttfrGadgetutvecklareiWindows7_10F46/gadgetsWin7_liten_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VadrnyttfrGadgetutvecklareiWindows7_10F46/gadgetsWin7_stor_2.png" mce_href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VadrnyttfrGadgetutvecklareiWindows7_10F46/gadgetsWin7_stor_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=gadgetsWin7_stor border=0 alt=gadgetsWin7_stor src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VadrnyttfrGadgetutvecklareiWindows7_10F46/gadgetsWin7_stor_thumb.png" width=244 height=162 mce_src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/VadrnyttfrGadgetutvecklareiWindows7_10F46/gadgetsWin7_stor_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Vädergadget i liten och större storlek på skrivbordet. &lt;BR&gt;&lt;BR&gt;En annan nyhet är att du kan använda Javascript alert- och felmeddelanden genom att sätta registernyckeln: &lt;BR&gt;&lt;CODE&gt;&lt;BR&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Sidebar] "ShowScriptErrors"=dword:00000001&lt;/CODE&gt;. &lt;/P&gt;
&lt;P&gt;Tidigare svaldes Javascript alerts av gadget-miljön vilket gjorde gadgets en smula&lt;A href="http://keithelder.net/blog/archive/2008/01/31/Debugging-Vista-Sidebar-Gadgets-in-Visual-Studio-2008.aspx" target=_blank mce_href="http://keithelder.net/blog/archive/2008/01/31/Debugging-Vista-Sidebar-Gadgets-in-Visual-Studio-2008.aspx"&gt; knepiga att debugga.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Ytterligare en nyhet är att du kan välja om dina gadgets ska använda Internet Explorers autozoom om användaren har &lt;A href="http://www.istartedsomething.com/20081029/windows-7-dpi-scaling-my-7-is-bigger-than-your-7/" target=_blank mce_href="http://www.istartedsomething.com/20081029/windows-7-dpi-scaling-my-7-is-bigger-than-your-7/"&gt;hög DPI-inställning&lt;/A&gt; påslagen i Windows. Det gör du via manifestfilen och det nya elementet autoscaleDPI. &lt;A href="http://msdn.microsoft.com/en-us/library/dd370867(VS.85).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/dd370867(VS.85).aspx"&gt;Här kan du läsa mer om nyheterna i Windows 7 för gadget-plattformen.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Personligen så tror jag att utvecklingen av små nytto-gadgets verkligen kommer att ta fart när Windows 7 börjar rullas ut på allvar och den installerade plattformen för gadgets ökar.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9895487" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Gadgets/default.aspx">Gadgets</category><category domain="http://blogs.msdn.com/robf/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Presentation från Mid Tech-konferensen i Sundsvall</title><link>http://blogs.msdn.com/robf/archive/2009/09/11/presentation-fr-n-mid-tech-konferensen-i-sundsvall.aspx</link><pubDate>Fri, 11 Sep 2009 02:04:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9893917</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9893917.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9893917</wfw:commentRss><description>&lt;p&gt;Igår medverkade jag på Mid Sweden Technology Conference-konferensen i Sundsvall som anordnades av &lt;a href="http://www.akroken.se/om-aakroken-science-park/aakroken---en-ideell-foerening" target="_blank"&gt;Åkroken Science Park&lt;/a&gt;. Stort tack till Gunilla Lagergren och alla andra som var med och arrangerade evenemanget.&lt;/p&gt;  &lt;p&gt;Tanken var att jag skulle hålla en presentation om nyheterna för utveckling av rika klienter i Windows 7 och möjligheterna med multitouch. Men jag fick också hoppa in och täcka upp för Fredrik Normén som blivit sjuk och därför inte kunde hålla sin RIA arkitekturdragning (som jag själv verkligen sett fram emot). Får därför även rikta ett stort tack till er som orkade vara kvar sista sessionen och lyssna på min, kanske inte helt strukturerade, genomgång av &lt;a href="http://code.msdn.microsoft.com/RiaServices" target="_blank"&gt;.NET RIA Services&lt;/a&gt; istället.&lt;/p&gt;  &lt;p&gt;Här kommer som utlovat länkar till demokod och mer information kring det jag visade:&lt;/p&gt;  &lt;p&gt;Powerpoint från Windows 7-presentationen &lt;a href="http://cid-3e8866f3bde90965.skydrive.live.com/browse.aspx/Sundsvall090909?nl=1&amp;amp;uc=6&amp;amp;isFromRichUpload=1" target="_blank"&gt;finns här.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Projektet med mitt exempel på federerad sök &lt;a href="http://cid-3e8866f3bde90965.skydrive.live.com/self.aspx/Sundsvall090909/FederatedSearchDemo.zip" target="_blank"&gt;kan du ladda hem här&lt;/a&gt; (VS 2008). Jag använder Entity Framework för att gå mot en lokal databas som inte ligger med i projektet - så du kommer inte kunna köra det direkt utan att byta ut datakällan, men det kan ju ge en idé om hur du kan använda funktionaliteten. I projektet&amp;#160; har jag använt &lt;a href="http://aspnet.codeplex.com/Wiki/View.aspx?title=WCF%20REST" target="_blank"&gt;WCF Rest Starter Kit&lt;/a&gt; för att skapa en Atom Feed av sökresultatet, koden är ganska självförklarande.&lt;/p&gt;  &lt;p&gt;Projektet med WPF-demo med Taskbar Jumplist- och notifieringsfunktioner &lt;a href="http://cid-3e8866f3bde90965.skydrive.live.com/self.aspx/Sundsvall090909/WPFTaskbarDemo.zip" target="_blank"&gt;finns här&lt;/a&gt; (VS 2008). Där använder jag mig av &lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack" target="_blank"&gt;Windows API Code Pack&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Jag fick några frågor under presentationen:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Fråga&lt;/strong&gt;: Fungerar Taskbar på samma sätt i Windows Server 2008 R2 som Windows 7?       &lt;br /&gt;&lt;strong&gt;Svar&lt;/strong&gt;: Taskbar-funktionerna finns även i Windows Server 2008 R2. Så här ser det t.ex. när man högerklickar på Taskbar-ikonen för Powershell i Windows Server 2008 R2:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/PresentationfrnMidTechkonferenseniSundsv_10726/TaskbarJumplistWin2008_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TaskbarJumplistWin2008" border="0" alt="TaskbarJumplistWin2008" src="http://blogs.msdn.com/blogfiles/robf/WindowsLiveWriter/PresentationfrnMidTechkonferenseniSundsv_10726/TaskbarJumplistWin2008_thumb.png" width="244" height="233" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Fråga&lt;/strong&gt;: Finns det stöd för Taskbar-funktioner när det gäller Win32-utveckling med MFC (motsvarande stödet som byggs in i WPF 4)?       &lt;br /&gt;&lt;strong&gt;Svar&lt;/strong&gt;: I dagsläget finns det flera bra exempel i &lt;a href="http://blogs.msdn.com/windowssdk/archive/2009/08/07/released-windows-sdk-for-windows-7-and-net-framework-3-5-sp1.aspx" target="_blank"&gt;Windows 7 SDK&lt;/a&gt;:t men inget inbyggt stöd i MFC. &lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Det Multitouch-demo som jag körde i WPF 4 &lt;a href="http://cid-3e8866f3bde90965.skydrive.live.com/self.aspx/Sundsvall090909/WPF4TouchDemo.zip" target="_blank"&gt;finns här&lt;/a&gt; (VS 2010).&lt;/p&gt;  &lt;p&gt;Silverlight-demot&amp;#160; &lt;a href="http://cid-3e8866f3bde90965.skydrive.live.com/self.aspx/Sundsvall090909/SLMultiTouch.zip" target="_blank"&gt;finns här&lt;/a&gt; (VS 2008). &lt;/p&gt;  &lt;p&gt;Här finns även &lt;a href="http://cid-3e8866f3bde90965.skydrive.live.com/self.aspx/Sundsvall090909/NETRIAServicesDemo.zip" target="_blank"&gt;det .NET RIA Services-projekt&lt;/a&gt; som jag visade på slutet (kräver att du har AdventureWorks-databasen). &lt;/p&gt;  &lt;p&gt;Som avslutning: här är några bra länkar för dig som vill lär dig mer om multitouch:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://beta.channel9.msdn.com/shows/Continuum/MultitouchWPF4Beta1/" target="_blank"&gt;Här finns en kort intro&lt;/a&gt; till Multi touch-stödet i VS 2010 Beta 1. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://videos.visitmix.com/MIX09/T39F" target="_blank"&gt;En längre filmen om WPF 4&lt;/a&gt; från MIX-konferensen i våras, den innehåller ett avsnitt som handlar om Multitouch. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://videos.visitmix.com/MIX08/UX08" target="_blank"&gt;Daniel Makoski&lt;/a&gt; är chefsinteraktionsdesigner på Surface-teamet och riktigt intressant föreläsare. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://videos.visitmix.com/MIX09/C15F" target="_blank"&gt;Den här sessionen&lt;/a&gt; handlar om ”new patterns, behaviors, and design approaches for touch and gesture interfaces”. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/pdc2008/PC03/" target="_blank"&gt;Den här inspelningen&lt;/a&gt; är från PDC förra året så den börjar bli lite gammal – men det mesta av innehållet stämmer fortfarande. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://multitouchvista.codeplex.com/ " target="_blank"&gt;Multi touch Vista&lt;/a&gt; är ett projekt som ger möjlighet att använda t.ex. två möss som input om man inte har tillgång till en multi touch skärm (funkar även på Win7).&lt;/li&gt;    &lt;li&gt;Här är &lt;a href="http://multitouch.codeplex.com/ " target="_blank"&gt;ett annat intressant Multi touch-projekt&lt;/a&gt; på Codeplex.&lt;/li&gt;    &lt;li&gt;Identity Mine har &lt;a href="http://www.identitymine.com/forward/ " target="_blank"&gt;en bra blogg&lt;/a&gt; där de bland annat skriver om Surface och Win7 touch.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ddj.com/architect/216402697"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893917" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/robf/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/robf/archive/tags/Surface/default.aspx">Surface</category><category domain="http://blogs.msdn.com/robf/archive/tags/Rika+klienter/default.aspx">Rika klienter</category><category domain="http://blogs.msdn.com/robf/archive/tags/.NET+RIA+Services/default.aspx">.NET RIA Services</category></item><item><title>Missa inte early bird-rabatten om du ska till PDC-konferensen</title><link>http://blogs.msdn.com/robf/archive/2009/09/08/missa-inte-early-bird-rabatten-om-du-ska-till-pdc-konferensen.aspx</link><pubDate>Tue, 08 Sep 2009 16:32:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9892559</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9892559.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9892559</wfw:commentRss><description>&lt;p&gt;Den 17-19 november är det dags igen för &lt;a href="http://microsoftpdc.com/" target="_blank"&gt;Professional Developers Conference&lt;/a&gt; i Los Angeles Convention Center. PDC är kanske den allra viktigaste konferensen för dig som vill få en tidig inblick i vilka tekniker och plattformar som Microsoft kommer att erbjuda under de kommande åren.&lt;/p&gt;  &lt;p&gt;Om du hade tänkt åka så missa inte rabatten som du får fram till den 15:e september, &lt;a href="http://microsoftpdc.com/Registration" target="_blank"&gt;läs mer och anmäl dig här&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892559" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robf/archive/tags/PDC/default.aspx">PDC</category></item><item><title>Multitouch i Windows 7 med Silverlight 3</title><link>http://blogs.msdn.com/robf/archive/2009/09/07/multitouch-i-windows-7-med-silverlight-3.aspx</link><pubDate>Mon, 07 Sep 2009 16:31:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9892226</guid><dc:creator>Robert Folkesson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/robf/comments/9892226.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robf/commentrss.aspx?PostID=9892226</wfw:commentRss><description>&lt;p&gt;En av de kanske minst kända nyheterna i Silverlight 3 är möjligheten att hantera input från multitouch-skärmar på datorer som kör Windows7. Det här öppnar upp för riktigt intressanta scenarion –&amp;#160; ett exempel är att kunna köra en webbaserad kampanj på sin sajt och sedan köra exakt samma applikation på multitouch-skärmar i en butiksmiljö.&lt;/p&gt;  &lt;p&gt;För att kunna använda multitouch i Windows 7 med Silverlight krävs naturligtvis att du har tillgång till hårdvara med stöd för multitouch. Både HP och Dell har i dagsläget ett antal enheter med stöd för multitouch och fler är på väg. Jag har testat &lt;a href="http://h10010.www1.hp.com/wwpc/se/sv/ho/WF05a/321957-321957-3835812-3835813-3835813-3945160.html" target="_blank"&gt;HP TouchSmart tx2&lt;/a&gt; som är en trevlig och behändig liten laptop, den är faktiskt inte speciellt dyr heller.&lt;/p&gt;  &lt;p&gt;I Silverlight får du inte tillgång till alla multitouch-meddelanden som Windows levererar när operativsystemet känner igen olika gester (t.ex. att dra isär fingrarna för zoom-gest) utan endast basala ‘TouchPoints’-event som innehåller information om vilken typ av meddelande (TOUCHEVENTF_DOWN, TOUCHEVENTF_MOVE, TOUCHEVENTF_UP) samt vilken position på skärmen som eventet rör.&lt;/p&gt;  &lt;p&gt;För att hantera multitouch i Silverlight 3 så använder du den nya statiska klassen ‘Touch’ och dess ‘FrameReported’-event:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;!--CRLF--&gt;&lt;!--CRLF--&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;!--CRLF--&gt;&lt;!--CRLF--&gt;&lt;!--CRLF--&gt;&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        Touch.FrameReported+=&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TouchFrameEventHandler(Touch_FrameReported);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Till skillnad från t.ex. MouseOver-event så kan inte FrameReported kopplas till enskilda element eller kontroller i Silverlight-applikationen utan gäller för hela applikationen.&lt;/p&gt;

&lt;p&gt;Som argument till FrameReported -eventet kommer du att få ett antal TouchPoints. Varje TouchPoint kan ha en ‘Action’ som är antingen Down, Move eller Up. Down sker när ett finger sätts på skärmen. Därefter kommer Windows kontinuerligt att skicka Move-meddelanden tills fingret lyfts och ett Up-meddelande sänds.&lt;/p&gt;

&lt;p&gt;För att hantera dessa meddelanden så loopar du igenom TouchPoints och undersöker varje Points action. Så här kan det se ut ifall man skriver en anonym metod i C# för att hantera eventet:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            Touch.FrameReported += (s, e) =&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (TouchPoint tp &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; e.GetTouchPoints(&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;))&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt; (tp.Action)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; TouchAction.Down:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                                &lt;span style="color: #008000"&gt;//TODO hantera att användaren startat gest&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                                &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; TouchAction.Move:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                                &lt;span style="color: #008000"&gt;//TODO hantera att användaren rör fingret&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                                &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                        &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; TouchAction.Up:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                                &lt;span style="color: #008000"&gt;//TODO hantera att användaren släpper skärmen&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                                &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Varje TouchPoint innehåller sedan information som du kan använda dig av för att t.ex. flytta ett objekt eller skala om det. Via Position.X och Position.Y kan du få ut koordinaterna från eventet och via TouchDevice.DirectlyOver får du det element som ligger överst där touch-eventet skedde:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;case&lt;/span&gt; TouchAction.Move:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;//TODO hantera att användaren rör fingret&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// PositionX och PositionY innehåller&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// de nya x,y koordinaterna:&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; positionX = tp.Position.X;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; positionY = tp.Position.Y;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// TouchDevice.DirectlyOver innehåller&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// vilket element som ligger överst där&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// touch eventet skedde&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        UIElement el = tp.TouchDevice.DirectlyOver;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Nu är ju det här ett ganska ‘rått’ sätt att komma åt och tolka användargester på – och det krävs en hel del kodning för att kunna läsa av t.ex. en zoomningsgest utförd med två fingrar. Men som tur är börjar det redan poppa upp intressanta community-projekt som utökar touch-funktionaliteten i Silverlight:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.davidezordan.net/blog/?p=1367" target="_blank"&gt;Davide Zordan har skapat Behaviors&lt;/a&gt; som du direkt kan koppla på kontroller och element i Expression Blend 3 för att få ‘Drag’ och ‘Zoom’-funktionalitet 

    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://miria.codeplex.com/" target="_blank"&gt;MIRIA SDK&lt;/a&gt; innehåller en uppsättning gestbaserade User Controls och har en egen “gest-tolkare” som kan känna igen gester och spåra hur fingrar används &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892226" width="1" height="1"&gt;</description></item></channel></rss>