<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/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>Ori Calvo : פיתוח</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx</link><description>Tags: פיתוח</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Cleaning after Knockout</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2013/01/29/clean_2D00_after_2D00_knockout.aspx</link><pubDate>Tue, 29 Jan 2013 06:33:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1709004</guid><dc:creator>oric</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=1709004</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2013/01/29/clean_2D00_after_2D00_knockout.aspx#comments</comments><description>&lt;p&gt;Using KnockoutJS is really fun. You set some data-bind attributes on your HTML and KnockoutJS does the magic of binding it to a JavaScript object (A.K.A, view model)&lt;/p&gt;  &lt;p&gt;An important fact that most of us are missing is that Knockout holds some internal data structure to manage its magic. Basically, every time you call ko.applyBindings a new management record is added to KO internal representation. &lt;/p&gt;  &lt;p&gt;This means that your view model is being held by some global data managed by KO. So in case you create and destroy HTML dynamically using JavaScript the view model is not cleaned up by the browser garbage collector which eventually harts your application performance and stability.&lt;/p&gt;  &lt;p&gt;Consider the following scenario,&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;An HTML template was downloaded from the server and is held inside the browser memory (as a normal string)&lt;/li&gt;    &lt;li&gt;You use jQuery to clone the template and create an HTML element out of it&lt;/li&gt;    &lt;li&gt;You use KO to bind the newly created HTML element to a JavaScript object (view model)&lt;/li&gt;    &lt;li&gt;You destroy the HTML element when it is not needed any more&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I hope you agree that this kind of manipulation is quite common for single page application&lt;/p&gt;  &lt;p&gt;The problem, as I mentioned before is that destroying the HTML element is not enough. As result of using KO applyBindings mechanism KO is holding some global data which indirectly contains a reference to your view model.&lt;/p&gt;  &lt;p&gt;To see this issue in action, open the attached &lt;a href="https://skydrive.live.com/redir?resid=E418C5DAA368F5FE!6361&amp;amp;authkey=!AJDABZQ6ribAoyw"&gt;sample&lt;/a&gt; and perform the following&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Take a heap snapshot using Chrome developer tools&lt;/li&gt;    &lt;li&gt;Click Create, Bind and then Destroy (do not click Unbind)&lt;/li&gt;    &lt;li&gt;Take another snapshot&lt;/li&gt;    &lt;li&gt;Ask Chrome to perform comparison of the two snapshots&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Untitled_28063D96.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Untitled" border="0" alt="Untitled" src="http://blogs.microsoft.co.il/blogs/oric/Untitled_thumb_4C4B2218.png" width="604" height="370" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You will then noticed that an object of type ViewModel was created but was not collected by the garbage collector&lt;/p&gt;  &lt;p&gt;Now, run the same scenario but this time click Create, Bind, &lt;u&gt;&lt;strong&gt;Unbind&lt;/strong&gt;&lt;/u&gt; and then Destroy&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Untitled_2C1FEF8E.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Untitled" border="0" alt="Untitled" src="http://blogs.microsoft.co.il/blogs/oric/Untitled_thumb_075EB24A.png" width="604" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you can see, this time a ViewModel object was created and destroyed by the garbage collector.&lt;/p&gt;  &lt;p&gt;So, what did the “Unbind” button do? Short answer: &lt;u&gt;&lt;strong&gt;ko.cleanNode&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;To summarize, you should consider using ko.cleanNode before destroying an HTML element. Else, you end up with memory leaks !&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1709004" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E605D305_+_DC05E705D505D705_/default.aspx">צד לקוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Single+Page+Application/default.aspx">Single Page Application</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Knockout/default.aspx">Knockout</category></item><item><title>Are you using Cassette?</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2012/03/20/cassette.aspx</link><pubDate>Wed, 21 Mar 2012 01:42:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1038697</guid><dc:creator>oric</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=1038697</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2012/03/20/cassette.aspx#comments</comments><description>&lt;p&gt;ASP.NET 4.5 Developer Preview introduces a new capability to manage scripts bundling and minification. You can read about it &lt;a href="http://www.asp.net/web-pages/overview/what&amp;#39;s-new/what&amp;#39;s-new-in-aspnet-45-and-visual-web-developer-11-developer-preview#_Toc303354470"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, the current implementation lacks a very important aspect of scripts management which is managing the dependencies. As you know, when referencing a single script file you also need to reference all its dependencies. &lt;/p&gt;
&lt;p&gt;Wouldn&amp;#39;t it be nice if someone automatically injects the right dependencies? Enter &lt;a href="http://getcassette.net/"&gt;Cassette&lt;/a&gt; world ...&lt;/p&gt;
&lt;p&gt;Cassette is an HttpModule which seats inside ASP.NET pipeline and monitors requests for scripts and CSS. Cassette can automatically bundle and minify your code and even more interesting it can parse each JavaScript/CSS file and understand the list of dependencies. When analysis is completed Cassette renders a flat list of references with the correct order. Cool, right?&lt;/p&gt;
&lt;p&gt;In the following section I would like to describe the way you can start using Cassette. Of course, you can skip this introduction and get the formal Cassette documentation from &lt;a href="http://getcassette.net/documentation/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s assume we are dealing with a very basic application. The default view Home/Index.cshtml displays a simple button and when the user clicks it a jQuery UI dialog appears. Starter code can be downloaded from &lt;a href="http://blogs.microsoft.co.il/blogs/oric/UseCassette/Starter.zip"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To accomplish this basic application I added some script references were needed. Typically, this means adding a script references inside the layout file (for jQuery and jQuery UI) and one more inside the Home/Index.cshtml view.&lt;/p&gt;
&lt;p&gt;The layout file looks like this:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;head&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;meta&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;charset&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;title&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;ViewBag.Title&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;title&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;Url&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Content&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Content/themes/base/jquery.ui.all.css&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;)&amp;quot;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;Url&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Content&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Content/Site.css&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;)&amp;quot;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;Url&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Content&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Scripts/jquery-1.5.1.js&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;)&amp;quot;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;Url&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Content&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Scripts/jquery-ui-1.8.11.js&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;)&amp;quot;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;Url&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Content&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Scripts/modernizr-1.7.js&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;)&amp;quot;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;head&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;And Home/Index.cshtml view:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;Url&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Content&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Scripts/App/Home/Index.js&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;)&amp;quot;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;h2&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;ViewBag.Message&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;h2&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;p&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; To learn more about ASP.NET MVC visit &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;a&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;http://asp.net/mvc&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;title&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;ASP.NET MVC Website&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;http://asp.net/mvc&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;a&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;input&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;buttonSayHello&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;Say Hello&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;p&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;To summarize, we have a view which uses a script file which uses jQuery and jQuery UI libraries. &lt;/p&gt;
&lt;p&gt;Now, lets see how Cassette can help us managing all these dependencies.&lt;/p&gt;
&lt;p&gt;Open NuGet Manager UI and install a package named &amp;quot;Cassette.Web&amp;quot;&lt;/p&gt;
&lt;p&gt;Now we need to fix scripts, CSS and views.&lt;/p&gt;
&lt;p&gt;Open ~/Views/Shared/_Layout.cshtml and fix it as below:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;head&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;meta&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;charset&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;title&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;ViewBag.Title&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;title&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Bundles&lt;/font&gt;&lt;/span&gt;.RenderStylesheets()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;Bundles&lt;/font&gt;&lt;/span&gt;.RenderScripts()&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@{&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#2b91af"&gt;Bundles&lt;/font&gt;&lt;/span&gt;.Reference(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Content/themes/base/jquery.ui.all.css&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#2b91af"&gt;Bundles&lt;/font&gt;&lt;/span&gt;.Reference(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Content/Site.css&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;head&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Fix ~/Views/Home/Index.cshtml:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;@{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#2b91af"&gt;Bundles&lt;/font&gt;&lt;/span&gt;.Reference(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Scripts/App/Home/Index.js&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;h2&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="BACKGROUND-IMAGE:none;BACKGROUND-ATTACHMENT:scroll;BACKGROUND-REPEAT:repeat;BACKGROUND-POSITION:0% 0%;"&gt;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;@&lt;/font&gt;&lt;/span&gt;ViewBag.Message&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;h2&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;p&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; To learn more about ASP.NET MVC visit &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;a&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;http://asp.net/mvc&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;title&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;ASP.NET MVC Website&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;http://asp.net/mvc&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;a&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;input&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;buttonSayHello&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;Say Hello&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;p&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Fix ~/Scripts/App/Home/Index.js to hold a VS doc reference to jQuery UI script. Cassette understands this comment as a script dependency:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#006400"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;/// &amp;lt;reference path=&amp;quot;../../Libs/jquery-ui-1.8.11.js&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;br /&gt; &lt;br /&gt;(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#buttonSayHello&amp;quot;&lt;/font&gt;&lt;/span&gt;).click(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; dlg = $(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;&amp;lt;div&amp;gt;Hello World&amp;lt;/div&amp;gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dlg.dialog({&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; modal: &lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;})();&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Please note that we are referencing the non minified version of jQuery UI. The reason is that Cassette supports its own built-in minification.&lt;/p&gt;
&lt;p&gt;Fix jQuery UI script to reference jQuery Core script:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;span&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#006400"&gt;/// &amp;lt;reference path=&amp;quot;jquery-1.5.1.js&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Last thing, we need to fix jQuery CSS files. Currently, those CSS are using the @import keyword. To utilize Cassette support for CSS it is recommended that you switch those commands to Cassette syntax. For example, add the following lines to the beginning of jquery.ui.all.css file and remove the @import lines:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#006400"&gt;/*&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;br /&gt;&lt;font color="#006400"&gt;&lt;span&gt;@reference &amp;quot;jquery.ui.base.css&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;@reference &amp;quot;jquery.ui.theme.css&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#006400"&gt;*/&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;You should fix jquery.ui.base.css in the same way:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#006400"&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;/*&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;br /&gt;&lt;span&gt;@reference &amp;quot;jquery.ui.core.css&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;@reference &amp;quot;jquery.ui.resizable.css&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;@reference &amp;quot;jquery.ui.selectable.css&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;@reference &amp;quot;jquery.ui.accordion.css&amp;quot;;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;
&lt;span&gt;&lt;font color="#006400"&gt;@reference &amp;quot;jquery.ui.autocomplete.css&amp;quot;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#006400"&gt;@reference &amp;quot;jquery.ui.button.css&amp;quot;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#006400"&gt;@reference &amp;quot;jquery.ui.dialog.css&amp;quot;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#006400"&gt;@reference &amp;quot;jquery.ui.slider.css&amp;quot;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#006400"&gt;@reference &amp;quot;jquery.ui.tabs.css&amp;quot;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#006400"&gt;@reference &amp;quot;jquery.ui.datepicker.css&amp;quot;;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#006400"&gt;@reference &amp;quot;jquery.ui.progressbar.css&amp;quot;;&lt;/font&gt;&lt;/span&gt;
&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#006400"&gt;*/&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;That’s it !!! After fixing views, scripts and CSSs you are ready to execute the application and monitor Cassette magic. &lt;/p&gt;
&lt;p&gt;Look at the HTML source and notice how Cassette injects all the required scripts and CSS references. In addition, Cassette uses a hash value of the script content to guard against browser caching. Cool.&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.core.css?9d38d2bbe70eb75c4119ab72510a117cfb49b913&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.resizable.css?4860357b34ca9d209a61784a0839e55a9ac6372c&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.selectable.css?e381398c50e0566a49408576e0a87df9217f16d8&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.accordion.css?73fb7966f0b3a2bf686deb7c8dec0edd42894eb7&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.autocomplete.css?10ac974fd724c7dd45359c494c8e63d4fac5c226&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.button.css?26b11c4e2b69746007bb9e9d819b54f3368597b0&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.dialog.css?a4c49ffd917f8f26b225abfe26bef4c7ea334cbd&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.slider.css?6880af0ef985e536612b67e7b51c41ae074dd303&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.tabs.css?1bb52f3a3d42c8337947b6c43a1cdbb365364841&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.datepicker.css?b40203fd3aaf03fecdb5de53ee73e0d174291909&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.progressbar.css?8e462a4c8734825474b5fd073965319af166abc8&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.base.css?5ece017066850b7e1ac6cfeae595740e324bc18d&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.theme.css?42d2c7901f9c0bd5d0a5b3a68191f82837f8658f&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.all.css?1ce06a5255860062cfdb27f241c2ed1c70a64a81&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/Site.css?46fe61a9c663b0bb427604fb6bd30608930274ac&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/jquery-1.5.1.js?1e9619c4943d9fc8dbb73191d4179b6dd75ab25a&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/jquery-ui-1.8.11.js?be8e64d1d5e7005b31d42f79c3de3e7d08f2bc47&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/App/Home/Index.js?00b16e534e25dfa101f194748034c8b0fbda2d01&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;Please note how Cassette resolves the dependencies between Index.js and jQuery scripts.&lt;/p&gt;
&lt;p&gt;We can do even more with Cassette. Open ~/CassetteConfiguration.cs and change it:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;CassetteConfiguration&lt;/font&gt;&lt;/span&gt; : &lt;span&gt;&lt;font color="#2b91af"&gt;ICassetteConfiguration&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; Configure(&lt;span&gt;&lt;font color="#2b91af"&gt;BundleCollection&lt;/font&gt;&lt;/span&gt; bundles, &lt;span&gt;&lt;font color="#2b91af"&gt;CassetteSettings&lt;/font&gt;&lt;/span&gt; settings)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bundles.Add&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;ScriptBundle&lt;/font&gt;&lt;/span&gt;&amp;gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Scripts/App&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bundles.Add&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;ScriptBundle&lt;/font&gt;&lt;/span&gt;&amp;gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Scripts/Libs&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bundles.Add&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;StylesheetBundle&lt;/font&gt;&lt;/span&gt;&amp;gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Content/Site.css&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bundles.Add&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;StylesheetBundle&lt;/font&gt;&lt;/span&gt;&amp;gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;~/Content/themes/base&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Execute application and look at the HTML source:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.accordion.css?73fb7966f0b3a2bf686deb7c8dec0edd42894eb7&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.autocomplete.css?10ac974fd724c7dd45359c494c8e63d4fac5c226&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.button.css?26b11c4e2b69746007bb9e9d819b54f3368597b0&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.core.css?9d38d2bbe70eb75c4119ab72510a117cfb49b913&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.datepicker.css?b40203fd3aaf03fecdb5de53ee73e0d174291909&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.dialog.css?a4c49ffd917f8f26b225abfe26bef4c7ea334cbd&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.progressbar.css?8e462a4c8734825474b5fd073965319af166abc8&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.resizable.css?4860357b34ca9d209a61784a0839e55a9ac6372c&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.selectable.css?e381398c50e0566a49408576e0a87df9217f16d8&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.slider.css?6880af0ef985e536612b67e7b51c41ae074dd303&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.tabs.css?1bb52f3a3d42c8337947b6c43a1cdbb365364841&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.base.css?5ece017066850b7e1ac6cfeae595740e324bc18d&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.theme.css?42d2c7901f9c0bd5d0a5b3a68191f82837f8658f&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/themes/base/jquery.ui.all.css?1ce06a5255860062cfdb27f241c2ed1c70a64a81&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Content/Site.css?46fe61a9c663b0bb427604fb6bd30608930274ac&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/jquery-1.5.1.js?1e9619c4943d9fc8dbb73191d4179b6dd75ab25a&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/jquery-ui-1.8.11.js?be8e64d1d5e7005b31d42f79c3de3e7d08f2bc47&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/jquery.unobtrusive-ajax.js?ab8e4edddbe5721804e6eeb588684d7a31c10c25&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/jquery.validate.js?378f121fe0d02e2d59c64094e47e107e453f56a9&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/jquery.validate.unobtrusive.js?57492833508444cc10554b9dd6240c313334641c&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/MicrosoftAjax.debug.js?e68b3852c1d342f7515ae93f743fd925b84abf6a&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/MicrosoftMvcAjax.debug.js?56e5c96216e716945637882bde9c2503209d5948&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/MicrosoftMvcValidation.debug.js?1dc04a87db830ff07c2e962aa505b575853ac282&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/Libs/modernizr-1.7.js?aa20a6d214a44351de222630fa5c2f6bd5850867&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/asset/Scripts/App/Home/Index.js?00b16e534e25dfa101f194748034c8b0fbda2d01&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, Cassette is including all files found under the specified directory. Why is that?&lt;/p&gt;
&lt;p&gt;In our sample we defined a bundle for the ~/Scripts/App directory and also defined a reference for the jquery-ui-1.8.11.js script which is part of that bundle. Cassette rule is very simple regarding this case. When refering to a script found under a bundle Cassette ensures that the whole bundle is referenced. This means that all scripts/CSSs under the bundle are injected. &lt;/p&gt;
&lt;p&gt;This is reasonable. Bundling means “get me all files” and Cassette does that for your. When switching to production you will see only one reference to the bundle itself. &lt;/p&gt;
&lt;p&gt;Now, lets switch to production. Open ~/Web.config and change debug setting to false:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;compilation&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;debug&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;targetFramework&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt;4.0&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Execute application and look at the HTML source. Cassette enforces the bundling configuration and of course minifies the content:&lt;/p&gt;&lt;pre style="BACKGROUND:white;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/stylesheetbundle/Content/themes/base_ba0e60ffa8a7b377d7725e11bc30a12ccac64c98&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/stylesheetbundle/Content/Site.css_46fe61a9c663b0bb427604fb6bd30608930274ac&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/scriptbundle/Scripts/Libs_a452bb8b8567293fda9273cd0b929d0927be6cd1&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Lucida Sans Typewriter"&gt;&lt;font style="FONT-SIZE:9.8pt;"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/_cassette/scriptbundle/Scripts/App_00b16e534e25dfa101f194748034c8b0fbda2d01&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#ff0000"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;When developing the web site you don’t want minification and bundling. This is exactly what Cassette does when respecting the “debug” setting inside web.config&lt;/p&gt;
&lt;p&gt;Full fixed sample with Cassette configuration can be downloaded from &lt;a href="http://blogs.microsoft.co.il/blogs/oric/UseCassette/Solution.zip"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I realy love Cassette. What do you think?&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1038697" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E605D305_+_E905E805EA05_/default.aspx">צד שרת</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Cassette/default.aspx">Cassette</category></item><item><title>Implement an HTML table using DIVs</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2011/12/24/implement-an-html-table-using-div-only.aspx</link><pubDate>Sat, 24 Dec 2011 15:40:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:967393</guid><dc:creator>oric</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=967393</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2011/12/24/implement-an-html-table-using-div-only.aspx#comments</comments><description>&lt;p&gt;This is quite an old topic but still when browsing through some popular forums I still encounter the following&amp;nbsp;question: &amp;quot;How can I implement a table using DIVs and control the width of each column?&amp;quot;&lt;/p&gt;
&lt;p&gt;Before digging into the implementation I would like to share my thoughts regarding the old TABLE vs. DIV war:&lt;br /&gt;In the old days web developers used TABLE tag for displaying a tabular data and for controlling the layout of the page.&lt;br /&gt;These days it seems as everyone hates TABLE and tries to use DIV instead for both tasks. I don&amp;#39;t share the same feelings.&lt;br /&gt;I use TABLE for tabular data display and DIV for general page layouting.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Still, as&amp;nbsp;I mentioned before, many people ask regarding implementing a table using DIVs. So here is the magic. Full sample code can be found &lt;a href="http://blogs.microsoft.co.il/blogs/oric/DivInsteadOfTable.zip"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;pre style="FONT-FAMILY:Lucida Sans Typewriter;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="BACKGROUND:yellow;"&gt;@&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;using&lt;/span&gt;&amp;nbsp;DivInsteadOfTable.Models;&lt;br /&gt; &lt;br /&gt;&lt;span style="BACKGROUND:yellow;"&gt;@model&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;User&lt;/span&gt;[]&lt;br /&gt; &lt;br /&gt;&lt;span style="BACKGROUND:yellow;"&gt;@{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ViewBag.Title&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Index&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style="BACKGROUND:yellow;"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;h2&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;Index&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;h2&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;table&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;header&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;cell&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;cell&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;cell&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E-Mail&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="BACKGROUND:yellow;"&gt;@&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:#2b91af;"&gt;User&lt;/span&gt;&amp;nbsp;user&amp;nbsp;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Model)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;row&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;cell&amp;nbsp;id&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="BACKGROUND:yellow;"&gt;@&lt;/span&gt;user.ID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;cell&amp;nbsp;name&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="BACKGROUND:yellow;"&gt;@&lt;/span&gt;user.Name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;quot;cell&amp;nbsp;email&amp;quot;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="BACKGROUND:yellow;"&gt;@&lt;/span&gt;user.EMail&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;And CSS should be something like this:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Lucida Sans Typewriter;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:maroon;"&gt;div.table&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;width&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;35em&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="COLOR:maroon;"&gt;div.header&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;font-weight&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;bold&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;background-color&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;LightGray&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;clear&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;both&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;overflow&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;hidden&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="COLOR:maroon;"&gt;div.row&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;clear&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;both&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;overflow&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;hidden&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;padding-bottom&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;1px&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;padding-top&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;1px&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="COLOR:maroon;"&gt;div.row:hover&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;clear&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;both&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;background-color&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;LightBlue&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;border-width&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;1px&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;border-color&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;Blue&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;border-style&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;solid&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span style="COLOR:maroon;"&gt;div.cell&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;float&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;left&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:red;"&gt;width&lt;/span&gt;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;10em&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Execute the sample and you will get the following:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="" align="left" src="http://blogs.microsoft.co.il/blogs/oric/DIVsInsteadOfTable.png" width="578" height="667" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I am sure there are different ways to achieve the same functionality. What CSS are you using? &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=967393" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Grid/default.aspx">Grid</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/HTML/default.aspx">HTML</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/TABLE/default.aspx">TABLE</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/DIV/default.aspx">DIV</category></item><item><title>Exclude A Filter</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2011/10/28/exclude-a-filter.aspx</link><pubDate>Fri, 28 Oct 2011 09:06:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:921533</guid><dc:creator>oric</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=921533</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2011/10/28/exclude-a-filter.aspx#comments</comments><description>&lt;p&gt;In my last ASP.NET MVC MSDN session I was asked a simple question: &amp;quot;How can we disable a filter for a specific action, assuming it is already defined at the class level?&amp;quot;&lt;/p&gt;
&lt;p&gt;Of course, having this ability can really ease the maintenance of our application. Without this ability we need NOT to define the filter at the class level and then define at each action level.&lt;/p&gt;
&lt;p&gt;Well, I did not have any simple question. However, I claimed that such an infrastructure can be easily developed using the excellent ASP.NET MVC extensibility support. Is that so? Let&amp;#39;s try do it&lt;/p&gt;
&lt;p&gt;Full sample code can be found &lt;a title="here" href="http://blogs.microsoft.co.il/blogs/oric/HowToExcludeAFilter.zip"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ASP.NET MVC has a special provider named &amp;quot;FilterProvider&amp;quot; which is responsible for fetching all relevant filters from a specific controller and action. &lt;br /&gt;We can define our own provider and register it instead of the default ones. Once we do this, we have a full control of the filters ASP.NET MVC is aware of and we can decide which filters to remove according to some criteria.&lt;/p&gt;
&lt;p&gt;Suppose we have the following controller definition:&amp;nbsp;&lt;/p&gt;&lt;pre style="FONT-FAMILY:Lucida Sans Typewriter;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;[&lt;span style="COLOR:#2b91af;"&gt;Authorize&lt;/span&gt;]&lt;br /&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;HomeController&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Controller&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;Index()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;Admin()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;RequiresAdmin2()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;RequiresAdmin3()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;RequiresAdmin4()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;RequiresAdmin5()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;And we would like to make the &amp;quot;Index&amp;quot; action unsecured. In other words, we would like to hide the &amp;quot;Authorize&amp;quot; filter at the &amp;quot;Index&amp;quot; action level but still keep it at the class level.&lt;br /&gt;It would be nice if the following is supported:&amp;nbsp; &lt;/p&gt;&lt;pre style="FONT-FAMILY:Lucida Sans Typewriter;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;[&lt;span style="COLOR:#2b91af;"&gt;Authorize&lt;/span&gt;]&lt;br /&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;HomeController&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Controller&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;ExcludeFilter&lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;AuthorizeAttribute&lt;/span&gt;))]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;Index()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;Admin()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;RequiresAdmin2()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;RequiresAdmin3()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;RequiresAdmin4()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;RequiresAdmin5()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;To achieve that, we need to define a new Attribute named &amp;quot;ExcludeFilter&amp;quot;:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Lucida Sans Typewriter;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ExcludeFilterAttribute&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;FilterAttribute&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Type&lt;/span&gt;&amp;nbsp;filterType;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;ExcludeFilterAttribute(&lt;span style="COLOR:#2b91af;"&gt;Type&lt;/span&gt;&amp;nbsp;filterType)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.filterType&amp;nbsp;=&amp;nbsp;filterType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Type&lt;/span&gt;&amp;nbsp;FilterType&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.filterType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;Now, let&amp;#39;s define a new IFilterProvider which looks for ExcludeFilter attributes and filters out the relevant action filters:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Lucida Sans Typewriter;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ExcludeFilterProvider&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;IFilterProvider&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;FilterProviderCollection&lt;/span&gt;&amp;nbsp;filterProviders;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;ExcludeFilterProvider(&lt;span style="COLOR:#2b91af;"&gt;IFilterProvider&lt;/span&gt;[]&amp;nbsp;filters)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.filterProviders&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;FilterProviderCollection&lt;/span&gt;(filters);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Filter&lt;/span&gt;&amp;gt;&amp;nbsp;GetFilters(&lt;span style="COLOR:#2b91af;"&gt;ControllerContext&lt;/span&gt;&amp;nbsp;controllerContext,&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionDescriptor&lt;/span&gt;&amp;nbsp;actionDescriptor)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Filter&lt;/span&gt;[]&amp;nbsp;filters&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.filterProviders.GetFilters(controllerContext,&amp;nbsp;actionDescriptor).ToArray();&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;ExcludeFilterAttribute&lt;/span&gt;&amp;gt;&amp;nbsp;excludeFilters&amp;nbsp;=&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;from&lt;/span&gt;&amp;nbsp;f&amp;nbsp;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&amp;nbsp;filters&amp;nbsp;&lt;span style="COLOR:blue;"&gt;where&lt;/span&gt;&amp;nbsp;f.Instance&amp;nbsp;&lt;span style="COLOR:blue;"&gt;is&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ExcludeFilterAttribute&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;select&lt;/span&gt;&amp;nbsp;f.Instance&amp;nbsp;&lt;span style="COLOR:blue;"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ExcludeFilterAttribute&lt;/span&gt;);&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Type&lt;/span&gt;&amp;gt;&amp;nbsp;filterTypesToRemove&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Type&lt;/span&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:#2b91af;"&gt;ExcludeFilterAttribute&lt;/span&gt;&amp;nbsp;excludeFilter&amp;nbsp;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&amp;nbsp;excludeFilters)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filterTypesToRemove.Add(excludeFilter.FilterType);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Filter&lt;/span&gt;&amp;gt;&amp;nbsp;res&amp;nbsp;=&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;from&lt;/span&gt;&amp;nbsp;filter&amp;nbsp;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&amp;nbsp;filters&amp;nbsp;&lt;span style="COLOR:blue;"&gt;where&lt;/span&gt;&amp;nbsp;!filterTypesToRemove.Contains(filter.Instance.GetType())&amp;nbsp;&lt;span style="COLOR:blue;"&gt;select&lt;/span&gt;&amp;nbsp;filter);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;res;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;In addition, we need to register our FilterProvider and remove the old ones:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre style="FONT-FAMILY:Lucida Sans Typewriter;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Application_Start()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;AreaRegistration&lt;/span&gt;.RegisterAllAreas();&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegisterGlobalFilters(&lt;span style="COLOR:#2b91af;"&gt;GlobalFilters&lt;/span&gt;.Filters);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegisterRoutes(&lt;span style="COLOR:#2b91af;"&gt;RouteTable&lt;/span&gt;.Routes);&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;IFilterProvider&lt;/span&gt;[]&amp;nbsp;providers&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;FilterProviders&lt;/span&gt;.Providers.ToArray();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;FilterProviders&lt;/span&gt;.Providers.Clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;FilterProviders&lt;/span&gt;.Providers.Add(&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ExcludeFilterProvider&lt;/span&gt;(providers));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;That&amp;#39;s it!!! &lt;/p&gt;
&lt;p&gt;As you can see, it is quite simple to &amp;quot;twick&amp;quot; ASP.NET MVC to do the thing we need. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=921533" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E605D305_+_E905E805EA05_/default.aspx">צד שרת</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Filter/default.aspx">Filter</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/IFilterProvider/default.aspx">IFilterProvider</category></item><item><title>ASP.NET MVC 3 MSDN Session</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2011/09/28/asp-net-mvc-3-msdn-session.aspx</link><pubDate>Wed, 28 Sep 2011 18:35:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:907443</guid><dc:creator>oric</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=907443</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2011/09/28/asp-net-mvc-3-msdn-session.aspx#comments</comments><description>&lt;p&gt;Two days ago I delivered another ASP.NET MVC 3 MSDN session.&lt;br /&gt;As usual, we started with the basics to allow engineers not familiar with ASP.NET MVC to understand the major concepts behind it&lt;/p&gt;
&lt;p&gt;During the second part of the session, I demonstrated several subjects that are considered more advanced such as, Custom Action Result, Custom Model Binder, Custom Metadata Provider and other Custom XXX&lt;br /&gt;In addition, I had the chance to introduce some really nice tools such as Knapsack and ASP.NET Mini Profiler&lt;/p&gt;
&lt;p&gt;All samples which were presented during the session can be found at &lt;a href="https://skydrive.live.com/?cid=e418c5daa368f5fe&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=E418C5DAA368F5FE%21189"&gt;my SkyDrive public folders&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I really enjoyed delivering this session and hope that every one else enjoyed it too&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=907443" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Ioc/default.aspx">Ioc</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Razor/default.aspx">Razor</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Source Control with SVN</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2011/04/22/source-control-with-svn.aspx</link><pubDate>Fri, 22 Apr 2011 17:50:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:820424</guid><dc:creator>oric</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=820424</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2011/04/22/source-control-with-svn.aspx#comments</comments><description>&lt;p&gt;Since 2005 I&amp;#39;ve been mostly working with Microsoft Team Foundation Server to manage my source code. Before that I had the chance to work with Microsoft Source Safe and even a bit with WinCVS (for self projects)&lt;/p&gt;
&lt;p&gt;These days I am back again working on a self project and need to share my source code with two other developers. All roads led me to SVN.&lt;br /&gt;I was quite surprised how easily an SVN server can be installed and manipulated from Windows Explorer. So I decided to share this info with you.&lt;/p&gt;
&lt;p&gt;There are several implementations of SVN server you can use. I decided to use VisualSVN Server since it is free and offers optional Visual Studio integration (payment is required).&lt;br /&gt;VisualSVN can be installed from &lt;a href="http://www.visualsvn.com/server/download/"&gt;here&lt;/a&gt;. The installation process is quite easy (Next next next ...)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer1.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer1.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer2.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer2.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer3.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer3.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer4.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer4.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer5.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer5.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After installing VisualSVN&amp;nbsp;server you need to create a new repository and a new user. The management UI can be found under: &lt;strong&gt;Start | Programs | VisualSVN | VisualSVN Server Manager&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer6.PNG"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer6.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer6.PNG" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer7.PNG"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer8.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/VisualSVNServer8.PNG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now it&amp;#39;s time to&amp;nbsp;configure an SVN&amp;nbsp;client application.&lt;/p&gt;
&lt;p&gt;Once again, there is more than one&amp;nbsp;open source/free implementation that you can use. I chose TortoiseSVN. You can download it from &lt;a href="http://tortoisesvn.net/downloads.html"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise1.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise1.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise2.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise2.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise3.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise3.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise4.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise4.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let your machine restart and you are ready to go.&lt;/p&gt;
&lt;p&gt;Open VisualSVN server management UI and right click your repository then select &amp;quot;&lt;strong&gt;Copy URL to clipboard&lt;/strong&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;Open Windows Explorer and locate the directory which contains the source code you would like to add to the SVN repository. Right click the directory and select &amp;quot;&lt;strong&gt;TortoiseSVN | Import&amp;quot;. &lt;/strong&gt;Paste the copied URL into the first relevant text box.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise5.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise5.PNG" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise6.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise6.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Select &amp;quot;&lt;strong&gt;Accept permanently&lt;/strong&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise7.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise7.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Type the name of&amp;nbsp;the user and password you created&amp;nbsp;before and press &amp;quot;OK&amp;quot;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You should note that the files were only copied and are not controller at the moment. To enjoy the power of SVN you need to checkout the repository to a different directory and start working from there.&lt;/p&gt;
&lt;p&gt;Open Windows Explorer and locate the directory that you want to checkout the repository into it. Right click it and select &amp;quot;&lt;strong&gt;SVN Checkout ...&lt;/strong&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise8.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise8.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Select &amp;quot;OK&amp;quot;. Repository content is copied to the selected directory and you can start edit your files inside Visual Studio. The copied&amp;nbsp;files are &lt;u&gt;&lt;strong&gt;not read-only&lt;/strong&gt;&lt;/u&gt; so you don&amp;#39;t need to issue any command inside Visual Studio.&lt;/p&gt;
&lt;p&gt;When finish editing your code you can commit the changes by opening Windows Explorer, locate the checked-out directory, right click it and select &amp;quot;&lt;strong&gt;TortoiseSVN | Commit&lt;/strong&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/oric/Tortoise9.PNG"&gt;&lt;img border="0" src="http://blogs.microsoft.co.il/blogs/oric/Tortoise9.PNG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As you probably noticed there are many other commands offered by TortoiseSVN. Enjoy ...&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=820424" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E605D305_+_E905E805EA05_/default.aspx">צד שרת</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/SVN/default.aspx">SVN</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Source+Control/default.aspx">Source Control</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/TortoiseSVN/default.aspx">TortoiseSVN</category></item><item><title>Implementing Composite Pattern with Entity Framework Code First - Part 2</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2011/03/17/implementing-composite-pattern-with-entity-framework-code-first-part-2.aspx</link><pubDate>Thu, 17 Mar 2011 22:42:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:807926</guid><dc:creator>oric</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=807926</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2011/03/17/implementing-composite-pattern-with-entity-framework-code-first-part-2.aspx#comments</comments><description>&lt;p&gt;In my &lt;a href="http://blogs.microsoft.co.il/blogs/oric/archive/2011/03/02/implementing-composite-pattern-with-entity-framework-code-first-ctp5.aspx"&gt;previous blog&lt;/a&gt; post I described the way you can implement Composite pattern using Entity Framework Code First. &lt;br /&gt;The sample uses EFCodeFirst CTP 5&amp;nbsp;which suffers from a minor bug related to the composite relationship.&lt;/p&gt;
&lt;p&gt;Microsoft just released &lt;a href="http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-release-candidate-available.aspx"&gt;EF 4.1 RC&lt;/a&gt;&amp;nbsp;which fixes the issue. Now, you can implement your composite pattern in a clean fashion. &lt;/p&gt;
&lt;p&gt;You can find the fixed composite pattern sample &lt;a href="http://blogs.microsoft.co.il/blogs/oric/CompositePatternWithEFCodeFirst.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=807926" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E605D305_+_E905E805EA05_/default.aspx">צד שרת</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/EntityFramework/default.aspx">EntityFramework</category></item><item><title>Using jQuery Grid with ASP.NET MVC </title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2011/03/11/using-jquery-grid-with-asp-net-mvc.aspx</link><pubDate>Fri, 11 Mar 2011 10:14:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:803983</guid><dc:creator>oric</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=803983</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2011/03/11/using-jquery-grid-with-asp-net-mvc.aspx#comments</comments><description>&lt;p&gt;Many newcomers to ASP.NET MVC are asking about&amp;nbsp;a replacement for the classical ASP.NET WebForms GridView server control.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;As always (almost) there are 3 possible solutions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;Do it your self&lt;/strong&gt; - Write an HTML&amp;nbsp;helper that renders some TABLE, TR and TD elements. For sure this is the hardest solution but it gives you absolute control&amp;nbsp;over grid behavior and&amp;nbsp;there is no need to learn new API because you are the owner of every bit and byte.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;Commercial implementation &lt;/strong&gt;- You can find many grid commercial implementations&amp;nbsp;which are&amp;nbsp;specialized for the ASP.NET MVC framework. &lt;a href="http://demos.telerik.com/aspnet-mvc/grid"&gt;Telerik&lt;/a&gt; has nice demos that you can play with before making a decision.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;Open source solution - &lt;/strong&gt;Many client side frameworks offers a general purpose grid implementation. You can take a look at &lt;a href="http://dev.sencha.com/deploy/dev/examples/grid/edit-grid.html"&gt;ExtJS&lt;/a&gt; capabilities or &lt;a href="http://dojotoolkit.org/grids-charts"&gt;Dojo&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Not surprising &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; too&amp;nbsp;has a nice &amp;quot;griding&amp;quot; capabilities. The implementation is offered through a plugin named jQuery Grid which can be downloaded &lt;a href="http://www.trirand.com/blog/"&gt;here&lt;/a&gt;.&lt;br /&gt;The plugin is a pure JavaScript solution and there is no integration with ASP.NET MVC. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx"&gt;Phil Haack&lt;/a&gt;&amp;nbsp;already posted a sample which shows how you can integrate jQuery Grid with ASP.NET MVC. However,&amp;nbsp;the sample is focused around the internal implementation. In this blog post I would like to present a way to make jQuery Grid more MVC friendly. The purpose is to&amp;nbsp;have a &lt;u&gt;&lt;strong&gt;simple HTML helper&lt;/strong&gt;&lt;/u&gt; which does all the hard work of coordinating client and server side needs and also to simplify the controller implementation.&lt;/p&gt;
&lt;p&gt;Suppose we have the following model class:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;ID&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;Required&lt;/span&gt;(ErrorMessage=&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Please&amp;nbsp;specify&amp;nbsp;a&amp;nbsp;first&amp;nbsp;name&amp;quot;&lt;/span&gt;)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;Display&lt;/span&gt;(Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;First&amp;nbsp;Name&amp;quot;&lt;/span&gt;)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;FirstName&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;Required&lt;/span&gt;(ErrorMessage&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Please&amp;nbsp;specify&amp;nbsp;a&amp;nbsp;last&amp;nbsp;name&amp;quot;&lt;/span&gt;)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="COLOR:#2b91af;"&gt;Display&lt;/span&gt;(Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Last&amp;nbsp;Name&amp;quot;&lt;/span&gt;)]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;LastName&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
}&lt;/pre&gt;
&lt;p&gt;And we would like to create a controller&amp;nbsp;action which returns a view with a nice AJAX grid. The controller actions should look something like that:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;Index()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;View();
}
&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt; GetPersons(&lt;span style="COLOR:#2b91af;"&gt;GridRequestParams&lt;/span&gt; gridRequestParams)
{
    &lt;span style="COLOR:blue;"&gt;using&lt;/span&gt; (&lt;span style="COLOR:#2b91af;"&gt;BookContext&lt;/span&gt; context = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BookContext&lt;/span&gt;())
    {
        &lt;span style="COLOR:blue;"&gt;return&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.GridData(context.Persons, gridRequestParams);
    }
}
&lt;/pre&gt;
&lt;p&gt;The first action&amp;nbsp;returns a view and the second action is responsible for returnning the actual data that is displayed&amp;nbsp;by the grid.&amp;nbsp;&lt;br /&gt;The view should construct a new grid using an HTML helper which allows us to work the same way as we do with plain HTML content (TextBox, CheckBox and others):&lt;/p&gt;
&lt;p&gt;&lt;span style="BACKGROUND:yellow;"&gt;@{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Html.Grid(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;gridPersons&amp;quot;&lt;/span&gt;,&amp;nbsp;Url.Action(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;GetPersons&amp;quot;&lt;/span&gt;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Column(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;,&amp;nbsp;10,&amp;nbsp;visible:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Column(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;FirstName&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;First&amp;nbsp;Name&amp;quot;&lt;/span&gt;,&amp;nbsp;200)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Column(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;LastName&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Last&amp;nbsp;Name&amp;quot;&lt;/span&gt;,&amp;nbsp;200)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Style(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;persons&amp;quot;&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.PageSize(7)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.DefaultSortColumn(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;LastName&amp;quot;&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.DefaultSortOrder(&lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Render();&lt;br /&gt;&lt;span style="BACKGROUND:yellow;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Executing above code should yield the following browser output:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="jQuery Grid" align="middle" src="http://blogs.microsoft.co.il/blogs/oric/jQueryGrid.png" width="522" height="525" /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, generating the grid is quite easy and you get a full AJAX behavior for paging and sorting. If you are interested in seeing how you can implement those easy helpers then keep reading. Else, go to the end of this post and download the full sample.&lt;/p&gt;
&lt;p&gt;In order to support this &amp;quot;lightness&amp;quot; code we need to work a bit hard and write some server and client side code.&lt;br /&gt;Let&amp;#39;s&amp;nbsp;start with the required HTML helper named &amp;quot;Grid&amp;quot; which is responsible for collecting all grid general properties (like url, columns and sort order). The HTML helper then renders into the HTML response stream all the HTML and data that is required by the client side code.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Below is the code for &amp;quot;Render&amp;quot; method inside the new HTML helper. Please note how the method is deserializing&amp;nbsp; some C# objects into XML string. The XML is embedded inside the HTML response. Later on, the client side code will use this XML to construct a jQuery Grid.&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Render()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Validate();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;&amp;nbsp;Convert&amp;nbsp;grid&amp;nbsp;information&amp;nbsp;into&amp;nbsp;xml&amp;nbsp;descriptors&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridXmlDescription&lt;/span&gt;&amp;nbsp;gridLayout&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridXmlDescription&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.url,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pageSize&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.pageSize,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sortColumn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.defaultSortColumn,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sortOrder&amp;nbsp;=&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.defaultSortOrderAsc&amp;nbsp;?&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;asc&amp;quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;desc&amp;quot;&lt;/span&gt;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:#2b91af;"&gt;ColumnBuilder&lt;/span&gt;&amp;nbsp;column&amp;nbsp;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.columns)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridColumnXmlDescription&lt;/span&gt;&amp;nbsp;layoutColumn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridColumnXmlDescription&lt;/span&gt;()&amp;nbsp;{&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name&amp;nbsp;=&amp;nbsp;column.Name,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;header&amp;nbsp;=&amp;nbsp;column.Header,&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width&amp;nbsp;=&amp;nbsp;column.Width,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visible&amp;nbsp;=&amp;nbsp;column.Visible};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gridLayout.columns.Add(layoutColumn);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;&amp;nbsp;Covert&amp;nbsp;Xml&amp;nbsp;descriptors&amp;nbsp;to&amp;nbsp;raw&amp;nbsp;XML&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;xml;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;using&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:#2b91af;"&gt;StringWriter&lt;/span&gt;&amp;nbsp;writer&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;StringWriter&lt;/span&gt;())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridXmlDescription&lt;/span&gt;.Serializer.Serialize(writer,&amp;nbsp;gridLayout);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xml&amp;nbsp;=&amp;nbsp;writer.GetStringBuilder().ToString();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;&amp;nbsp;Build&amp;nbsp;the&amp;nbsp;HTML&amp;nbsp;reuired&amp;nbsp;by&amp;nbsp;the&amp;nbsp;grid&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;helper.ViewContext.Writer.Write(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;lt;div&amp;nbsp;id=\&amp;quot;&amp;quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.id&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;helper.ViewContext.Writer.Write(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;nbsp;data-isGrid=\&amp;quot;true\&amp;quot;&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;helper.ViewContext.Writer.Write(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;nbsp;class=\&amp;quot;&amp;quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.style&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;helper.ViewContext.Writer.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;helper.ViewContext.Writer.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;lt;xml&amp;gt;&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;helper.ViewContext.Writer.WriteLine(xml);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;helper.ViewContext.Writer.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;lt;/xml&amp;gt;&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;helper.ViewContext.Writer.WriteLine(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;);
}
&lt;/pre&gt;
&lt;p&gt;The generated HTML should be something like that:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;gridPersons&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;data-isGrid&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;class&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;persons&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;script&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;type&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;text/xml&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;id&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;gridPersons_xml&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;gridLayout&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;url&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;/Home/GetPersons&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;url&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;pageSize&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;7&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;pageSize&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;sortColumn&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;LastName&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;sortColumn&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;sortOrder&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;desc&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;sortOrder&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;columns&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;column&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;name&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;ID&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;header&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;ID&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;width&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;10&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;visible&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;column&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;name&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;FirstName&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;header&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;First&amp;nbsp;Name&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;width&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;200&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;visible&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;column&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;name&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;LastName&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;header&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;Last&amp;nbsp;Name&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;width&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;200&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:red;"&gt;visible&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;columns&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;gridLayout&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&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 style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;div&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Please note how the XML information is embedded inside a script element of type &amp;quot;text/xml&amp;quot;. The browser ignores this content and&amp;nbsp;will not try to&amp;nbsp;render it.&lt;/p&gt;
&lt;p&gt;Next, we need to write down the client side code which looks for the embedded XML information and constructs the jQuery Grid widget:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;jQuery(document).ready(&lt;span style="COLOR:blue;"&gt;function&lt;/span&gt;&amp;nbsp;()&amp;nbsp;{
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Find&amp;nbsp;all&amp;nbsp;div&amp;nbsp;elements&amp;nbsp;which&amp;nbsp;are&amp;nbsp;actually&amp;nbsp;a&amp;nbsp;grid&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;grids&amp;nbsp;=&amp;nbsp;jQuery(&lt;span style="COLOR:maroon;"&gt;&amp;quot;div[data-isGrid=\&amp;#39;true&amp;#39;]&amp;quot;&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Inintialize&amp;nbsp;each&amp;nbsp;grid&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grids.each(&lt;span style="COLOR:blue;"&gt;function&lt;/span&gt;&amp;nbsp;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;grid&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;Grid(jQuery(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
});
&lt;/pre&gt;
&lt;p&gt;The code searches for all div element with attribute &amp;quot;data-isGrid=true&amp;quot;. Each matched div is considered the parent element for&amp;nbsp;the new grid. The JavaScript object &amp;quot;Grid&amp;quot; is responsible for completing the job:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;function&lt;/span&gt;&amp;nbsp;Grid(rootDiv)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;$this&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Prepare&amp;nbsp;some&amp;nbsp;usefull&amp;nbsp;attributes&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.id&amp;nbsp;=&amp;nbsp;rootDiv.getAttr(&lt;span style="COLOR:maroon;"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Extract&amp;nbsp;the&amp;nbsp;grid&amp;nbsp;layout&amp;nbsp;information&amp;nbsp;from&amp;nbsp;the&amp;nbsp;HTML&amp;nbsp;(as&amp;nbsp;XML)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;gridDesc&amp;nbsp;=&amp;nbsp;jQuery(jQuery(&lt;span style="COLOR:maroon;"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.id&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;_xml&amp;quot;&lt;/span&gt;).html());
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Extract&amp;nbsp;required&amp;nbsp;data&amp;nbsp;from&amp;nbsp;the&amp;nbsp;embedded&amp;nbsp;XML&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;url&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.getXmlElement(gridDesc,&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;pageSize&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.getXmlElement(gridDesc,&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;pageSize&amp;quot;&lt;/span&gt;,&amp;nbsp;10);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;sortColumn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.getXmlElement(gridDesc,&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;sortColumn&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;sortOrder&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.getXmlElement(gridDesc,&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;sortOrder&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;desc&amp;quot;&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Add&amp;nbsp;a&amp;nbsp;table&amp;nbsp;elememt&amp;nbsp;to&amp;nbsp;the&amp;nbsp;mainDiv&amp;nbsp;(table&amp;nbsp;element&amp;nbsp;is&amp;nbsp;required&amp;nbsp;by&amp;nbsp;the&amp;nbsp;jQuery&amp;nbsp;grid&amp;nbsp;plugin)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;tableId&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.id&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;_table&amp;quot;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;table&amp;nbsp;=&amp;nbsp;jQuery(&lt;span style="COLOR:maroon;"&gt;&amp;quot;&amp;lt;table&amp;nbsp;id=&amp;#39;&amp;quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;tableId&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;&amp;#39;&amp;nbsp;&amp;gt;&amp;lt;/table&amp;gt;&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rootDiv.append(table);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Add&amp;nbsp;a&amp;nbsp;pager&amp;nbsp;element&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;pagerId&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.id&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;_pager&amp;quot;&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;pager&amp;nbsp;=&amp;nbsp;jQuery(&lt;span style="COLOR:maroon;"&gt;&amp;quot;&amp;lt;div&amp;nbsp;id=&amp;#39;&amp;quot;&lt;/span&gt;&amp;nbsp;+&amp;nbsp;pagerId&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;&amp;#39;&amp;nbsp;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rootDiv.append(pager);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Read&amp;nbsp;the&amp;nbsp;xml&amp;nbsp;grid&amp;nbsp;layout&amp;nbsp;and&amp;nbsp;build&amp;nbsp;an&amp;nbsp;array&amp;nbsp;of&amp;nbsp;columnsModel&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;columnsHeaders&amp;nbsp;=&amp;nbsp;[];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;columnsModel&amp;nbsp;=&amp;nbsp;[];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gridDesc.getElement(&lt;span style="COLOR:maroon;"&gt;&amp;quot;columns&amp;nbsp;column&amp;quot;&lt;/span&gt;).each(&lt;span style="COLOR:blue;"&gt;function&lt;/span&gt;&amp;nbsp;()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;column&amp;nbsp;=&amp;nbsp;jQuery(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;columnsHeaders.push(column.getAttr(&lt;span style="COLOR:maroon;"&gt;&amp;quot;header&amp;quot;&lt;/span&gt;));
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;columnsModel.push({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;column.getAttr(&lt;span style="COLOR:maroon;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index:&amp;nbsp;column.getAttr(&lt;span style="COLOR:maroon;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width:&amp;nbsp;column.getAttr(&lt;span style="COLOR:maroon;"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hidden:&amp;nbsp;(column.getAttr(&lt;span style="COLOR:maroon;"&gt;&amp;quot;visible&amp;quot;&lt;/span&gt;)&amp;nbsp;==&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isData:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&amp;nbsp;&amp;nbsp;Build&amp;nbsp;the&amp;nbsp;actual&amp;nbsp;grid&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:darkgreen;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;options&amp;nbsp;=&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jsonReader:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;rows&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;page:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;page&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;total&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;records:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;records&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;repeatitems:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;datatype:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;json&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url:&amp;nbsp;url,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mtype:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height:&amp;nbsp;250,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;colNames:&amp;nbsp;columnsHeaders,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;colModel:&amp;nbsp;columnsModel,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;multiselect:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pager:&amp;nbsp;pager,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rowNum:&amp;nbsp;pageSize,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;caption:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(sortColumn&amp;nbsp;!=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;options.sortname&amp;nbsp;=&amp;nbsp;sortColumn;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;options.sortorder&amp;nbsp;=&amp;nbsp;(sortOrder&amp;nbsp;==&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;asc&amp;quot;&lt;/span&gt;&amp;nbsp;?&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;asc&amp;quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:maroon;"&gt;&amp;quot;desc&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;table.jqGrid(options);
}
&lt;/pre&gt;
&lt;p&gt;The code extracts the embedded XML information and constructs a jQuery Grid object using the plugin method named &amp;quot;jqGrid&amp;quot;. &lt;br /&gt;The most significant parameter that the jqGrid method recieves is the &amp;quot;url&amp;quot; parameter. This parameter should point to a server side action which returns a JSON data to be displayed in the grid. In our example the URL is set by the HTML helper to &amp;quot;/Home/GetPersons&amp;quot;. This URL&amp;nbsp;is handled by the controller&amp;#39;s action GetPersons:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt; GetPersons(&lt;span style="COLOR:#2b91af;"&gt;GridRequestParams&lt;/span&gt; gridRequestParams)
{
    &lt;span style="COLOR:blue;"&gt;using&lt;/span&gt; (&lt;span style="COLOR:#2b91af;"&gt;BookContext&lt;/span&gt; context = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BookContext&lt;/span&gt;())
    {
        &lt;span style="COLOR:blue;"&gt;return&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.GridData(context.Persons, gridRequestParams);
    }
}
&lt;/pre&gt;
&lt;p&gt;As you can see the action returns a special action result named &amp;quot;GridData&amp;quot;. This action result is responsible for converting the actual database query into a valid JSON result (that follows the right schema required by the jQuery Grid):&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:13px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridDataResult&lt;/span&gt;&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ActionResult&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridResponseParams&lt;/span&gt;&amp;nbsp;jsonResonse;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;GridDataResult(&lt;span style="COLOR:#2b91af;"&gt;IQueryable&lt;/span&gt;&amp;lt;T&amp;gt;&amp;nbsp;query,&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridRequestParams&lt;/span&gt;&amp;nbsp;gridParams)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;sidx&amp;nbsp;=&amp;nbsp;gridParams.sidx;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;sord&amp;nbsp;=&amp;nbsp;gridParams.sord;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;pageIndex&amp;nbsp;=&amp;nbsp;gridParams.page;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;pageSize&amp;nbsp;=&amp;nbsp;gridParams.rows;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;&amp;nbsp;Count&amp;nbsp;of&amp;nbsp;all&amp;nbsp;persons&amp;nbsp;in&amp;nbsp;DB&amp;nbsp;(is&amp;nbsp;used&amp;nbsp;by&amp;nbsp;the&amp;nbsp;grid&amp;nbsp;pager)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;rowsCount&amp;nbsp;=&amp;nbsp;query.Count();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;&amp;nbsp;Sort&amp;nbsp;all&amp;nbsp;data&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;IQueryable&lt;/span&gt;&amp;lt;T&amp;gt;&amp;nbsp;orderedQuery&amp;nbsp;=&amp;nbsp;query;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(sidx))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;orderedQuery&amp;nbsp;=&amp;nbsp;query.OrderBy(sidx,&amp;nbsp;sord);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;&amp;nbsp;Cut&amp;nbsp;into&amp;nbsp;single&amp;nbsp;page&amp;nbsp;(after&amp;nbsp;sorting)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;pageData&amp;nbsp;=&amp;nbsp;orderedQuery.Skip((pageIndex&amp;nbsp;-&amp;nbsp;1)&amp;nbsp;*&amp;nbsp;pageSize).Take(pageSize).ToArray();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;&amp;nbsp;Convert&amp;nbsp;the&amp;nbsp;data&amp;nbsp;into&amp;nbsp;more&amp;nbsp;grid&amp;nbsp;friendly&amp;nbsp;data&amp;nbsp;(convert&amp;nbsp;date&amp;nbsp;into&amp;nbsp;string)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;var&lt;/span&gt;&amp;nbsp;pageJsonData&amp;nbsp;=&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;from&lt;/span&gt;&amp;nbsp;row&amp;nbsp;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&amp;nbsp;pageData&amp;nbsp;&lt;span style="COLOR:blue;"&gt;select&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt;)row).ToArray();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&amp;nbsp;&amp;nbsp;Build&amp;nbsp;summary&amp;nbsp;required&amp;nbsp;by&amp;nbsp;the&amp;nbsp;grid&amp;nbsp;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:green;"&gt;//&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.jsonResonse&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GridResponseParams&lt;/span&gt;()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total&amp;nbsp;=&amp;nbsp;((&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;)&lt;span style="COLOR:#2b91af;"&gt;Math&lt;/span&gt;.Ceiling((&lt;span style="COLOR:blue;"&gt;double&lt;/span&gt;)rowsCount&amp;nbsp;/&amp;nbsp;pageSize)),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;page&amp;nbsp;=&amp;nbsp;pageIndex,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;records&amp;nbsp;=&amp;nbsp;rowsCount,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rows&amp;nbsp;=&amp;nbsp;pageJsonData
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;ExecuteResult(&lt;span style="COLOR:#2b91af;"&gt;ControllerContext&lt;/span&gt;&amp;nbsp;context)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;JsonResult&lt;/span&gt;&amp;nbsp;res&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;JsonResult&lt;/span&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res.Data&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.jsonResonse;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res.JsonRequestBehavior&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;JsonRequestBehavior&lt;/span&gt;.AllowGet;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res.ExecuteResult(context);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;Please note that the action is also hanlding paging and sorting manipulation.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;As you probably suspect at the beginning of this post, implementing the HTML helper, action result and client side code is not a simple task. However, once we done that we can enjoy the power of simple ASP.NET MVC HTML helper and construct a Grid using only two single steps:&lt;br /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;Write a view which uses the HTML helper named &amp;quot;Grid&amp;quot;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Write a controller&amp;#39;s action which returns a collection of Model object&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;The full sample code can be downloaded &lt;a href="http://blogs.microsoft.co.il/blogs/oric/jQueryGridHtmlHelper.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=803983" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Implementing Composite Pattern with Entity Framework Code First</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2011/03/02/implementing-composite-pattern-with-entity-framework-code-first-ctp5.aspx</link><pubDate>Thu, 03 Mar 2011 01:23:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:800622</guid><dc:creator>oric</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=800622</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2011/03/02/implementing-composite-pattern-with-entity-framework-code-first-ctp5.aspx#comments</comments><description>&lt;p&gt;The full sample code can be downloaded &lt;a href="http://blogs.microsoft.co.il/blogs/oric/CompositePatternWithEFCodeFirst-Part1.zip"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Entity Framework allows us to map object relationships into&amp;nbsp;a database. One of the useful relationship is the &lt;a href="http://www.google.co.il/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBwQFjAA&amp;amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FComposite_pattern&amp;amp;ei=loxuTdzcLcizhAevq6RA&amp;amp;usg=AFQjCNERrhJvf8hfKr6cY0fYonoxUiP2Hw"&gt;Composite Pattern&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Suppose we have implemented the following class diagram:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" alt="Address Book Class Diagram" align="middle" src="http://blogs.microsoft.co.il/blogs/oric/AddressBookModel.png" width="756" height="652" /&gt;&lt;/p&gt;
&lt;p&gt;As you can see this is a classical implementation of the Composite design pattern, where &lt;strong&gt;Group&lt;/strong&gt; holds a collection of polymorphic items through the property &lt;strong&gt;Items&lt;/strong&gt;&amp;nbsp;of type&amp;nbsp;&lt;strong&gt;BookItem&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We would like to save this model into a database using Entity Framework Code First.&lt;br /&gt;According to ECCodeFirst coding convention guidelines we should define the following classes:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;BookItem&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;ID&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;&amp;nbsp;Parent&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Accept(&lt;span style="COLOR:#2b91af;"&gt;IBookVisitor&lt;/span&gt;&amp;nbsp;visitor);
}
&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;BookItem&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;Name&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ICollection&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;BookItem&lt;/span&gt;&amp;gt;&amp;nbsp;Items&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;Group()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Items&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;BookItem&lt;/span&gt;&amp;gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Accept(&lt;span style="COLOR:#2b91af;"&gt;IBookVisitor&lt;/span&gt;&amp;nbsp;visitor) {...}
}&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;BookItem&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;FirstName&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;LastName&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;ICollection&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Address&lt;/span&gt;&amp;gt;&amp;nbsp;Addresses&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;Person()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Addresses&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Address&lt;/span&gt;&amp;gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Accept(&lt;span style="COLOR:#2b91af;"&gt;IBookVisitor&lt;/span&gt;&amp;nbsp;visitor) {...}
}&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Address&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;ID&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;Value&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;nbsp;Description&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;nbsp;Parent&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;PersonID&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Accept(&lt;span style="COLOR:#2b91af;"&gt;IBookVisitor&lt;/span&gt;&amp;nbsp;visitor) {...}
}&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;BookContext&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;DbContext&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;DbSet&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;BookItem&lt;/span&gt;&amp;gt;&amp;nbsp;Items&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;BookContext()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:blue;"&gt;base&lt;/span&gt;(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;AddressBook&amp;quot;&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;OnModelCreating(&lt;span style="COLOR:#2b91af;"&gt;ModelBuilder&lt;/span&gt;&amp;nbsp;model)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.Entity&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;BookItem&lt;/span&gt;&amp;gt;().ToTable(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;BookItems&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.Entity&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;gt;().ToTable(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Persons&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.Entity&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;&amp;gt;().ToTable(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Groups&amp;quot;&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.Entity&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Address&lt;/span&gt;&amp;gt;().HasRequired(a&amp;nbsp;=&amp;gt;&amp;nbsp;a.Parent)&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;				      .WithMany(p&amp;nbsp;=&amp;gt;&amp;nbsp;p.Addresses);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;base&lt;/span&gt;.OnModelCreating(model);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;&amp;nbsp;Root
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR:blue;"&gt;from&lt;/span&gt;&amp;nbsp;item&amp;nbsp;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Items&amp;nbsp;&lt;span style="COLOR:blue;"&gt;where&lt;/span&gt;&amp;nbsp;item.Parent&amp;nbsp;==&amp;nbsp;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;			 &lt;span style="COLOR:blue;"&gt;let&lt;/span&gt;&amp;nbsp;g&amp;nbsp;=&amp;nbsp;item&amp;nbsp;&lt;span style="COLOR:blue;"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;select&lt;/span&gt;&amp;nbsp;g).Single();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Initializer&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;DropCreateDatabaseIfModelChanges&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;BookContext&lt;/span&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Seed(&lt;span style="COLOR:#2b91af;"&gt;BookContext&lt;/span&gt;&amp;nbsp;context)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;&amp;nbsp;root&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;()&amp;nbsp;{&amp;nbsp;Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;~&amp;quot;&lt;/span&gt;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.Items.Add(root);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;nbsp;ori&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;()&amp;nbsp;{&amp;nbsp;FirstName&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Ori&amp;quot;&lt;/span&gt;,&amp;nbsp;LastName&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Calvo&amp;quot;&lt;/span&gt;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root.Items.Add(ori);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ori.Addresses.Add(&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Address&lt;/span&gt;()&amp;nbsp;{&amp;nbsp;Value&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ori.calvo@gmail.com&amp;quot;&lt;/span&gt;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ori.Addresses.Add(&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Address&lt;/span&gt;()&amp;nbsp;{&amp;nbsp;Value&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ori_calvo@hotmail.com&amp;quot;&lt;/span&gt;&amp;nbsp;});
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;&amp;nbsp;friends&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;()&amp;nbsp;{&amp;nbsp;Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Friends&amp;quot;&lt;/span&gt;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root.Items.Add(friends);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;nbsp;yossi&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;()&amp;nbsp;{&amp;nbsp;FirstName&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Yossi&amp;quot;&lt;/span&gt;,&amp;nbsp;LastName&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Halul&amp;quot;&lt;/span&gt;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;friends.Items.Add(yossi);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.SaveChanges();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}
&lt;/pre&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Hosting above code in a simple client application yields the following error: &amp;quot;Two entities with possibly different keys are mapped to the same row. Ensure these two mapping fragments map both ends of the AssociationSet to the corresponding columns.&amp;quot;&lt;br /&gt;The error is quite surprising since we are using the exact guidelines&amp;nbsp;published at&amp;nbsp;&lt;a href="http://blogs.msdn.com/b/adonet/archive/2010/12/06/ef-feature-ctp5-released.aspx"&gt;ADO.NET&amp;nbsp;team blog&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;After some investigation it looks like EFCodeFirst is not able to handle correctly the composite pattern without additional help. If you remove the collection of &lt;strong&gt;BookItems&lt;/strong&gt; inside &lt;strong&gt;Group&lt;/strong&gt; and remove the &lt;strong&gt;Parent&lt;/strong&gt; reference inside &lt;strong&gt;BookItem&lt;/strong&gt; everything works just fine.&lt;/p&gt;
&lt;p&gt;The magic solution is quite simple: Add a raw GroupID field (of type int) to the &lt;strong&gt;BookItem&lt;/strong&gt; class. This way EFCodeFirst understands that Group&amp;nbsp;has a one-to-many relationship with BookItem (beside the inheritance relationship). &lt;br /&gt;Here is the updated BookItem code:&lt;/p&gt;&lt;pre style="FONT-FAMILY:Consolas;BACKGROUND:white;COLOR:black;FONT-SIZE:19px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;BookItem&lt;/span&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&amp;nbsp;ID&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;virtual&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Group&lt;/span&gt;&amp;nbsp;Parent&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;?&amp;nbsp;GroupID&amp;nbsp;{&amp;nbsp;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&amp;nbsp;Accept(&lt;span style="COLOR:#2b91af;"&gt;IBookVisitor&lt;/span&gt;&amp;nbsp;visitor);
}&lt;/pre&gt;
&lt;p&gt;This time, the client application completes successfully. &lt;br /&gt;Please note that GroupID must be defined as nullable, else, you will get an error regarding a potential cyclic references.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=800622" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E605D305_+_E905E805EA05_/default.aspx">צד שרת</category></item><item><title>MSDN Session - Introducing ASP.NET MVC</title><link>http://blogs.microsoft.co.il/blogs/oric/archive/2011/02/23/msdn-session-introducing-asp-net-mvc.aspx</link><pubDate>Wed, 23 Feb 2011 15:21:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:795000</guid><dc:creator>oric</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/oric/rsscomments.aspx?PostID=795000</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/oric/archive/2011/02/23/msdn-session-introducing-asp-net-mvc.aspx#comments</comments><description>&lt;p&gt;Yesterday I delivered a nice (hopefully) MSDN session at Microsoft. During the session I presented the main features/goodies that were released during January month as part of ASP.NET MVC 3 release. &lt;br /&gt;The session was 4 hours long and was quite intense. &lt;/p&gt;
&lt;p&gt;During the first part of the session I built an application from scratch adding at each step a new functionality like editing capabilities, controlling access and routing system manipulation.&lt;br /&gt;During the second part I introduced the new features of ASP.NET MVC 3 and related technologies. Specifically I talked about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Razor syntax&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;NuGet&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;IIS Express&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Entity Framework Code First&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ASP.NET MVC 3 specific enhancements&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Many participants asked me for the Demos and PPTs. Actually, they are all should be uploaded to Channel9 (in the upcoming days). Up until then &lt;a href="http://cid-e418c5daa368f5fe.office.live.com/self.aspx/.Public/ASP.NET%20MVC%203%20%20MSDN%20Session%202.rar"&gt;here is a direct link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=795000" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E405D905EA05D505D705_/default.aspx">פיתוח</category><category domain="http://blogs.microsoft.co.il/blogs/oric/archive/tags/_E605D305_+_E905E805EA05_/default.aspx">צד שרת</category></item></channel></rss>