<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/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>ASP.NET Weblogs</title><link>http://weblogs.asp.net/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>LIDNUG: Online chat with me Monday Nov 23rd</title><link>http://weblogs.asp.net/scottgu/archive/2009/11/22/lidnug-online-chat-with-me-monday-nov-23rd.aspx</link><pubDate>Mon, 23 Nov 2009 07:30:16 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7263333</guid><dc:creator>ScottGu</dc:creator><author>ScottGu</author><slash:comments>1</slash:comments><description>&lt;font size="2" face="arial"&gt;   &lt;p&gt;This past week was a busy one – with lots of announcements and cool releases happening at this year’s &lt;a href="http://microsoftpdc.com/" target="_blank"&gt;PDC conference&lt;/a&gt;.&amp;#160; All of the PDC keynotes and breakout sessions are now posted online for anyone to watch for free.&amp;#160; You can find sessions to watch &lt;a href="http://microsoftpdc.com/Sessions" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;    &lt;p&gt;My PDC keynote covered our new Silverlight 4 release and was on Day 2.&amp;#160; You can watch it &lt;a href="http://bit.ly/67G2Q4" target="_blank"&gt;here&lt;/a&gt; (I start at the 1 hour, 2 minute, and 45 second mark).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;LIDNUG Online Chat Monday November 23rd&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;I’ll be doing a &lt;a href="http://events.linkedin.com/LIDNUG-Scott-Guthrie-Talks-Shop/pub/144324" target="_blank"&gt;free online web chat&lt;/a&gt; Monday November 23rd at 11:30am PST where you can ask any questions about anything (including PDC announcements).&amp;#160; &lt;/p&gt;    &lt;p&gt;The chat is hosted by the LIDNUG user group.&amp;#160; You can sign up and attend for free &lt;a href="http://events.linkedin.com/LIDNUG-Scott-Guthrie-Talks-Shop/pub/144324" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; The chat will be recorded and I’ll update this post with a link to the recording when it is over.&lt;/p&gt;    &lt;p&gt;You can ask questions either through the chat tool – or by posting them to Twitter.&amp;#160; To ask questions via twitter simply post a tweet using this format:&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;@ScottGu #LidnugLiveQ &lt;em&gt;question goes here&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;h3&gt;&lt;u&gt;Other PDC Resources&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;I’ll be doing more blog posts about some of what was announced at PDC this past week.&amp;#160; Below are a few good posts that summarize some of the announcements from my team in the meantime:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://bit.ly/83wA3e" target="_blank"&gt;Silverlight 4 Overview&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://bit.ly/8coLxh" target="_blank"&gt;Silverlight 4 Resources&lt;/a&gt; (includes links to all SL4 videos at PDC) &lt;/li&gt;      &lt;li&gt;&lt;a href="http://haacked.com/archive/2009/11/17/asp.net-mvc-2-beta-released.aspx" target="_blank"&gt;ASP.NET MVC 2 Beta&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://jamessenior.com/post/News-on-the-ASPNET-Ajax-Library.aspx" target="_blank"&gt;ASP.NET AJAX Library Beta&lt;/a&gt;&amp;#160; &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. In addition to blogging, I’m also now using Twitter for quick updates and to share links. Follow me at: &lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;em&gt; (@scottgu is my twitter name)&lt;/em&gt;&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7263333" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Talks/default.aspx">Talks</category></item><item><title>Ness Tziona Usergroup 1 Year Birthday Party</title><link>http://weblogs.asp.net/israelio/archive/2009/11/23/ness-tziona-usergroup-1-year-birthday-party.aspx</link><pubDate>Mon, 23 Nov 2009 06:49:23 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7263309</guid><dc:creator>Ohad Israeli</dc:creator><author>Ohad Israeli</author><slash:comments>0</slash:comments><description>&lt;p align="left"&gt;Last Wednesday we celebrated a year of community work with the Ness Tziona Usergroup !&lt;/p&gt;  &lt;p align="left"&gt;The meeting which included a lecture by &lt;a href="blogs.microsoft.co.il/blogs/pavely" target="_blank"&gt;Pavel&lt;/a&gt; about What’s new in C# 4.0 &amp;amp; Visual Studio 2010 grouped together more than 100 attendees who enjoyed a great lecture, 2 cakes, lots of pizza slices, balloon and a handful of books that were given over the presentation.&lt;/p&gt;  &lt;p align="left"&gt;C-Ya on our next meeting.&lt;/p&gt;  &lt;p align="left"&gt;Ohad.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2683_6DBDDF2A.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2683" border="0" alt="_MG_2683" src="http://weblogs.asp.net/blogs/israelio/_MG_2683_thumb_7CC49837.jpg" width="244" height="170" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2682_25EC3076.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2682" border="0" alt="_MG_2682" src="http://weblogs.asp.net/blogs/israelio/_MG_2682_thumb_4DEEB9C8.jpg" width="244" height="170" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2681_0C07D47A.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2681" border="0" alt="_MG_2681" src="http://weblogs.asp.net/blogs/israelio/_MG_2681_thumb_6D213ACE.jpg" width="244" height="170" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2679_241B1908.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2679" border="0" alt="_MG_2679" src="http://weblogs.asp.net/blogs/israelio/_MG_2679_thumb_533CDED2.jpg" width="244" height="170" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2677_6A1BB04E.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2677" border="0" alt="_MG_2677" src="http://weblogs.asp.net/blogs/israelio/_MG_2677_thumb_51C89633.jpg" width="244" height="170" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2671_1700ED5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2671" border="0" alt="_MG_2671" src="http://weblogs.asp.net/blogs/israelio/_MG_2671_thumb_3A013900.jpg" width="244" height="170" /&gt;&lt;/a&gt;&lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2675_5F1E836C.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2675" border="0" alt="_MG_2675" src="http://weblogs.asp.net/blogs/israelio/_MG_2675_thumb_2788C27E.jpg" width="170" height="244" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2674_7A935FA2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2674" border="0" alt="_MG_2674" src="http://weblogs.asp.net/blogs/israelio/_MG_2674_thumb_4A1CDB2C.jpg" width="170" height="244" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2676_0835F5DE.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2676" border="0" alt="_MG_2676" src="http://weblogs.asp.net/blogs/israelio/_MG_2676_thumb_317D180F.jpg" width="170" height="244" /&gt;&lt;/a&gt;&lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2673_3D9E9236.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2673" border="0" alt="_MG_2673" src="http://weblogs.asp.net/blogs/israelio/_MG_2673_thumb_7C606311.jpg" width="244" height="170" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2672_366F2FF1.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2672" border="0" alt="_MG_2672" src="http://weblogs.asp.net/blogs/israelio/_MG_2672_thumb_5AF097A8.jpg" width="244" height="170" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://weblogs.asp.net/blogs/israelio/IMG_2664_38B88C22.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_2664" border="0" alt="IMG_2664" src="http://weblogs.asp.net/blogs/israelio/IMG_2664_thumb_7A8F4BA3.jpg" width="244" height="170" /&gt;&lt;/a&gt;&lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2665_6695B90D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2665" border="0" alt="_MG_2665" src="http://weblogs.asp.net/blogs/israelio/_MG_2665_thumb_053C7D2C.jpg" width="244" height="170" /&gt;&lt;/a&gt; &lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2669_5127DDD8.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2669" border="0" alt="_MG_2669" src="http://weblogs.asp.net/blogs/israelio/_MG_2669_thumb_15F4020D.jpg" width="170" height="244" /&gt;&lt;/a&gt;&lt;a href="http://weblogs.asp.net/blogs/israelio/_MG_2670_6655E380.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="_MG_2670" border="0" alt="_MG_2670" src="http://weblogs.asp.net/blogs/israelio/_MG_2670_thumb_18D940F3.jpg" width="170" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7263309" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/israelio/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/israelio/archive/tags/DEV/default.aspx">DEV</category><category domain="http://weblogs.asp.net/israelio/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://weblogs.asp.net/israelio/archive/tags/Usergroup/default.aspx">Usergroup</category><category domain="http://weblogs.asp.net/israelio/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Recent Podcasts</title><link>http://haacked.com/archive/2009/11/22/recent-podcasts.aspx</link><pubDate>Mon, 23 Nov 2009 05:58:02 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7263310</guid><dc:creator>Latest Microsoft Blogs</dc:creator><author>Latest Microsoft Blogs</author><slash:comments>0</slash:comments><description>Just wanted to highlight a couple of podcasts that were suckers gracious enough to have me as a guest. HerdingCode In this podcast I join the fellas at HerdingCode . Although this podcast came out after the Hanselminutes one, it was actually recorded Read More......(&lt;a href="http://haacked.com/archive/2009/11/22/recent-podcasts.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7263310" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/aspnetmvc/default.aspx">aspnetmvc</category><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/Software+Development/default.aspx">Software Development</category></item><item><title>Speaking at the 5th UgiALT.Net Conference on Monotouch</title><link>http://weblogs.asp.net/chrishardy/archive/2009/11/22/speaking-at-ugialt-net-5-conference-on-monotouch.aspx</link><pubDate>Sun, 22 Nov 2009 21:10:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7263125</guid><dc:creator>Chris Hardy (ChrisNTR)</dc:creator><author>Chris Hardy (ChrisNTR)</author><slash:comments>3</slash:comments><description>Good evening! Just a quick note to say that I'm going to be speaking at the 5th Italian UgiALT.NET conference in Milan, Italy on Saturday 23rd January 2010. The conference will mainly be in Italian (apart from my session and maybe a few others) so that's something to be aware of before you go and book your tickets. I'm going to be talking about Monotouch/C# on the iPhone. You can get more information about the conference here: http://www.microsofttranslator.com/BV.aspx?ref=Internal&amp;amp;a=http%3a...(&lt;a href="http://weblogs.asp.net/chrishardy/archive/2009/11/22/speaking-at-ugialt-net-5-conference-on-monotouch.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7263125" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/chrishardy/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/chrishardy/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/chrishardy/archive/tags/iPhone/default.aspx">iPhone</category><category domain="http://weblogs.asp.net/chrishardy/archive/tags/Mono/default.aspx">Mono</category><category domain="http://weblogs.asp.net/chrishardy/archive/tags/Monotouch/default.aspx">Monotouch</category></item><item><title>Nullable data types in Visual Basic 9.0</title><link>http://weblogs.asp.net/dotnetstories/archive/2009/11/22/nullable-data-types-in-visual-basic-9-0.aspx</link><pubDate>Sun, 22 Nov 2009 13:46:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262989</guid><dc:creator>nikolaosk</dc:creator><author>nikolaosk</author><slash:comments>2</slash:comments><description>I know we are in Visual Studio 2010 and VB 10.0 version of the language-compiler.Most people I know (in my country anyway) work still with VS 2008 and .Net 3.5 SP1 version. In this post I would like to talk about language improvements in visual basic 9.0 and more specifically about nullable data types . The largest improvement in Visual basic 9.0 is LINQ . So all these enhancements that were made in the VB 9.0 language (the same goes for c# 3.0 enhancements) had LINQ in mind and how LINQ will be...(&lt;a href="http://weblogs.asp.net/dotnetstories/archive/2009/11/22/nullable-data-types-in-visual-basic-9-0.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262989" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/dotnetstories/archive/tags/Visual+Basic+9.0/default.aspx">Visual Basic 9.0</category><category domain="http://weblogs.asp.net/dotnetstories/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/dotnetstories/archive/tags/nullable+data+types/default.aspx">nullable data types</category><category domain="http://weblogs.asp.net/dotnetstories/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Daily tech links for .net and related technologies - November 21-23, 2009</title><link>http://weblogs.asp.net/sanjeevagarwal/archive/2009/11/22/daily-tech-links-for-net-and-related-technologies-november-21-23-2009.aspx</link><pubDate>Sun, 22 Nov 2009 06:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262877</guid><dc:creator>SanjeevAgarwal</dc:creator><author>SanjeevAgarwal</author><slash:comments>2</slash:comments><description>Daily tech links for .net and related technologies - November 21-23, 2009 Web Development ASP.NET MVC: Creating reports using Chart control T4MVC 2.5.01: added support for Html.RenderAction and Html.Action Web Application Configuration Analyzer (WACA) The Search Developer Story in SharePoint 2010 – Query Interfaces Using the Microsoft Ajax Library 3.5 with the CDN Microsoft AJAX Library Preview 6 &amp;amp; Data Binding Web Design User Interface Design Is Not About Lorem Ipsum And Pretty Boxes The Ultimate...(&lt;a href="http://weblogs.asp.net/sanjeevagarwal/archive/2009/11/22/daily-tech-links-for-net-and-related-technologies-november-21-23-2009.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262877" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/Ajax/default.aspx">Ajax</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/Database/default.aspx">Database</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/CSS/default.aspx">CSS</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/JQuery/default.aspx">JQuery</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/ORM/default.aspx">ORM</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/WCF/default.aspx">WCF</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/WPF/default.aspx">WPF</category><category domain="http://weblogs.asp.net/sanjeevagarwal/archive/tags/XML/default.aspx">XML</category></item><item><title>Resources for my SharePoint Services Talk</title><link>http://weblogs.asp.net/bsimser/archive/2009/11/21/resources-for-my-sharepoint-services-talk.aspx</link><pubDate>Sat, 21 Nov 2009 14:30:49 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262613</guid><dc:creator>Bil Simser</dc:creator><author>Bil Simser</author><slash:comments>2</slash:comments><description>&lt;p&gt;As promised here are some resources for my recent talk on creating and consuming services in SharePoint that I delivered at &lt;a href="http://www.microsoft.com/canada/techdays/"&gt;TechDays&lt;/a&gt;. You’ll be able to get the full slide deck, video, and code later at &lt;a href="http://my.techdays.ca"&gt;http://my.techdays.ca&lt;/a&gt; but here are the links from the slide deck and things I mentioned during the talk.&lt;/p&gt;  &lt;p&gt;Links&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd583131%28office.11%29.aspx"&gt;Writing Custom Web Services for SharePoint (MSDN)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd203468.aspx"&gt;Developing SharePoint Applications&lt;/a&gt; guidance from the Patterns and Practices group&lt;/li&gt;    &lt;li&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/ee413842.aspx"&gt;SharePoint Service Locator&lt;/a&gt; pattern&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Books&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/mspress/companion/9780735625914/"&gt;Developing Service-Oriented AJAX Applications&lt;/a&gt; (Book)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Developers-SharePoint-Services-Platform-Programming/dp/1584505001"&gt;Developers Guide to WSS 3.0&lt;/a&gt; (Book)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.ca/Professional-Microsoft-SharePoint-Reporting-Services/dp/0470481897"&gt;Professional Reporting with SharePoint 2007&lt;/a&gt; (Book)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Tools&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.u2u.be/Res/Tools/CamlQueryBuilder.aspx"&gt;U2U CAML Builder&lt;/a&gt; (2003 and 2007 versions)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://camldotnet.codeplex.com/"&gt;CAML.NET&lt;/a&gt; (.NET Library for writing CAML queries in code)&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262613" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>ASP.NET MVC: Creating reports using Chart control</title><link>http://weblogs.asp.net/gunnarpeipman/archive/2009/11/21/asp-net-mvc-creating-reports-using-chart-control.aspx</link><pubDate>Sat, 21 Nov 2009 13:36:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262585</guid><dc:creator>DigiMortal</dc:creator><author>DigiMortal</author><slash:comments>9</slash:comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2008/11/29/lt-asp-chart-gt.aspx"&gt;ASP.NET Chart control&lt;/a&gt; is powerful control you can use to add charting support to your web applications. Although chart controls are mainly used with ASP.NET forms it is not very hard to use them also in &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/tags/MVC/default.aspx"&gt;ASP.NET MVC applications&lt;/a&gt;. In this posting I will show you how to use ASP.NET Chart control in ASP.NET MVC application and I will illustrate how to do it easily so you don’t mess up your views.&lt;/p&gt;  &lt;p&gt;Before we start coding I want to make some notes about my solution:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;this solution is pretty new and it is sure that one can improve the code provided here, &lt;/li&gt;    &lt;li&gt;using this solution I’m trying to generalize in-place reporting for MVC applications, &lt;/li&gt;    &lt;li&gt;also I’m trying to keep my views as clean as possible – chart definitions are not small if you have more complex charts or if you want very nice looking charts. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you are not familiar with ASP.NET Chart control then please read my blog posting &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2008/11/29/lt-asp-chart-gt.aspx"&gt;&amp;lt;asp:Chart&amp;gt;&lt;/a&gt;. You find there simple introduction to this free control and also all necessary links.&lt;/p&gt;  &lt;h3&gt;Solution overview&lt;/h3&gt;  &lt;p&gt;What we are trying to build here is shown on the following diagram. Our main goal is to avoid using ASP.NET forms elements in our MVC line user interface. Also we want to generalize reporting support so we have one interface for all reports. &lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Solution overview" border="0" alt="Solution overview" src="http://weblogs.asp.net/blogs/gunnarpeipman/aspnetmvcchartcontroldiagram_69A13A0D.png" width="532" height="245" /&gt; &lt;/p&gt;  &lt;p&gt;I introduce here pretty simple report. If you have more complex reports then you can extend reporting interface shown below later. You may also find useful to reorganize outputing system. I am using here simple works-for-me or works-for-prototyping solution. I want to focus on point and let’s try not to lose it.&lt;/p&gt;  &lt;h3&gt;Reporting interface&lt;/h3&gt;  &lt;p&gt;Before we create our first report let’s define interface for it. This interface must define all basic actions we need to do with reports:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;set source with report data, &lt;/li&gt;    &lt;li&gt;bind data to report, &lt;/li&gt;    &lt;li&gt;write report image to some (output) stream. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is my reporting interface. Note that DataSource has only setter – it is because I don’t have currently need to ask data from chart. I only provide data to it.&lt;/p&gt;  &lt;hr size="1" /&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;interface&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IReportControl &lt;font color="#000000"&gt;:&lt;/font&gt; IDisposable&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; DataBind();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;object&lt;/span&gt; DataSource { &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; SaveChartImage(&lt;span style="color: #2b91af"&gt;Stream&lt;/span&gt; stream);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;hr size="1" /&gt;  &lt;p&gt;As you can see this interface is pretty thin. I am sure that it will grow in the future when need for more complex reports appears.&lt;/p&gt;  &lt;h3&gt;Sample report&lt;/h3&gt;  &lt;p&gt;Let’s define one report for testing purposes. Add web user control called MyReport.ascx to Reports folder of your web application and drag ASP.NET Chart control on it. Here is definition of my control.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;hr size="1" /&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;%&lt;span style="color: #a31515"&gt;@&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Control&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;C#&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;AutoEventWireup&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;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; CodeBehind&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LastEnquiriesChart.ascx.cs&lt;/span&gt;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;ReportingApp.Web.Reports.LastEnquiriesChart&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;        &lt;br /&gt;&lt;/span&gt;%&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;%&lt;span style="color: #a31515"&gt;@&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Register&lt;/span&gt;&lt;span style="color: blue"&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; assembly&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web.UI.DataVisualization.Charting&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;tagprefix&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;asp&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;        &lt;br /&gt;&lt;/span&gt;%&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp:Chart&lt;/span&gt;&lt;span style="color: blue"&gt; &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;Chart1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;server&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Palette&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Excel&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;200px&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &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;200px&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;series&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp:Series&lt;/span&gt;&lt;span style="color: blue"&gt; &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;Series2&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;CustomProperties&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;DrawingStyle=Emboss&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;XValueMember&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Date&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;YValueMembers&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Count&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;IsValueShownAsLabel&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; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Font&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Microsoft Sans Serif, 8pt&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LabelBackColor&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;255, 255, 192&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;LabelBorderColor&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;192, 192, 0&lt;/span&gt;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;LabelForeColor&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Red&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp:Series&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;series&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;chartareas&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp:ChartArea&lt;/span&gt;&lt;span style="color: blue"&gt; &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;ChartArea1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;BorderDashStyle&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Solid&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;AxisX&lt;/span&gt;&lt;span style="color: blue"&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IntervalAutoMode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;VariableCount&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IntervalOffsetType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Days&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;IntervalType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Days&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;IsLabelAutoFit&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;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;IsStartedFromZero&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;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;MajorGrid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Interval&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Auto&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;IntervalOffsetType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Days&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IntervalType&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Days&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;AxisX&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp:ChartArea&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;chartareas&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Titles&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp:Title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Font&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Microsoft Sans Serif, 8pt, style=Bold&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span 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;Title1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Last week enquiries&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp:Title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Titles&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp:Chart&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;hr size="1" /&gt; &lt;/div&gt;  &lt;p&gt;If you look at the definition and consider it as simple one you understand why I don’t want this mark-up to be there in my views. This is just one simple report. But consider for a moment three complex reports. 90% of my view will be one huge report definition then and I will miss all the good things that views have.&lt;/p&gt;  &lt;p&gt;As I want this report to be interfaced with my reporting mechanism I make it implement IReportControl interface. Code-behind of my control is as follows.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;hr size="1" /&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;LastEnquiriesChart&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;IReportControl&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt; DataSource&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Chart1.DataSource = &lt;span style="color: blue"&gt;value&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; DataBind()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;base&lt;/span&gt;.DataBind();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Chart1.DataBind();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; SaveChartImage(&lt;span style="color: #2b91af"&gt;Stream&lt;/span&gt; stream)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Chart1.SaveImage(stream);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;hr size="1" /&gt; &lt;/div&gt;  &lt;p&gt;All other user controls we are using for reporting must also implement IReportControl interface. This leads us to one interesting finding – we don’t have to host only chart control in our user controls, we have to host there whatever ASP.NET forms control we need for reporting. We can also create wrapper controls that get report image from some other external source (let’s say we have some COM component that is able to return reports as images).&lt;/p&gt;  &lt;h3&gt;Creating loader&lt;/h3&gt;  &lt;p&gt;Now we have sample report control and interface we can use to provide data and catch output of report. It is time to create meeting place for two worlds: ASP.NET forms and ASP.NET MVC framework. I created class called ReportLoader. The name of this class is good enough for me because it tells me that this is the integration point between two worlds. Let’s look at loader implementation now.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;hr size="1" /&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ChartLoader&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; SaveChartImage(&lt;span style="color: blue"&gt;string&lt;/span&gt; controlLocation,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt; data, &lt;span style="color: #2b91af"&gt;Stream&lt;/span&gt; stream)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;())&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; control = (&lt;span style="color: #2b91af"&gt;IReportControl&lt;/span&gt;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; page.LoadControl(&lt;span style="color: #a31515"&gt;&amp;quot;~/Reports/&amp;quot;&lt;/span&gt; + controlLocation))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; control.DataSource = data;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; control.DataBind();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; control.SaveChartImage(stream);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;hr size="1" /&gt; &lt;/div&gt;  &lt;p&gt;Loader does one trick: it doesn’t render the control. It only runs as long as report is written to stream and then it disposes user control and temporary page instance to avoid all other actions they may take. I made ChartLoader and SaveChartImage methods as static because I don’t need hell load of classes and super-cool architecture right now.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Creating controller action&lt;/h3&gt;  &lt;p&gt;We are almost there… Let’s create now controller action that returns chart image. As I am prototyping my application I use very robust controller action. You may be more polite coders and I strongly suggest you to read &lt;a href="http://biasecurities.com/"&gt;Bia Securities&lt;/a&gt; blog posting &lt;a href="http://biasecurities.com/blog/2008/binaryresult-for-asp-net-mvc/"&gt;BinaryResult for Asp.Net MVC&lt;/a&gt;. You can find BinaryResult implementation also from &lt;a href="http://www.codeplex.com/MVCContrib"&gt;MVC Contrib project&lt;/a&gt;.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;hr size="1" /&gt;     &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;HttpGet&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ActionResult&lt;/span&gt; GetChart()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; repository = &lt;span style="color: #2b91af"&gt;Resolver&lt;/span&gt;.Resolve&amp;lt;&lt;span style="color: #2b91af"&gt;IPriceEnquiryRepository&lt;/span&gt;&amp;gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; enquiries = repository.ListPriceEnquiries();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; data = &lt;span style="color: blue"&gt;from&lt;/span&gt; p &lt;span style="color: blue"&gt;in&lt;/span&gt; enquiries&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;group&lt;/span&gt; p &lt;span style="color: blue"&gt;by&lt;/span&gt; p.Date.Date &lt;span style="color: blue"&gt;into&lt;/span&gt; g&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;select&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; { Date = g.Key, Count = g.Count() };&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; Response.Clear();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; Response.ContentType = &lt;span style="color: #a31515"&gt;&amp;quot;image/png&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ChartLoader&lt;/span&gt;.SaveChartImage(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #a31515"&gt;&amp;quot;LastEnquiriesChart.ascx&amp;quot;&lt;/span&gt;,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data, &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.OutputStream);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; Response.End();&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;null&lt;/span&gt;; &lt;span style="color: green"&gt;// have to return something&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;hr size="1" /&gt; &lt;/div&gt;  &lt;p&gt;Now we have controller action that asks data from somewhere, prepares it for report and asks report as image from ChartLoader. Before outputing the report Response is cleared and content type is set to PNG. After writing image to response output stream the response is ended immediately to avoid any mark-up that may be written there otherwise. &lt;/p&gt;  &lt;p&gt;As you can see I created special automatic objects for reporting. If you look at my report definition you can see that x-axis is bound to Date and y-axis to Count. You can also prepare reporting data in some near-DAL class methods and then slide this data through controller to report. The choice is yours.&lt;/p&gt;  &lt;h3&gt;Adding report to view&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 15px; display: inline; border-top: 0px; border-right: 0px" title="ASP.NET Chart control output" border="0" alt="ASP.NET Chart control output" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/aspnetmvcchartimage_61C9219E.png" width="200" height="200" /&gt; Now let’s link report to view. We just have to add one simple img tag to our view and make it src to call out GetChart() method defined above.&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;hr size="1" /&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;img&lt;/span&gt;&lt;span style="color: blue"&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; src&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;%&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: red"&gt;Url.Action&lt;/span&gt;(&amp;quot;&lt;span style="color: blue"&gt;GetChart&lt;/span&gt;&amp;quot;)%&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&amp;quot;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;alt&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Last week enquiries&lt;/span&gt;&amp;quot;&amp;#160; &lt;br /&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; title&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Last week enquiries&lt;/span&gt;&amp;quot;      &lt;br /&gt;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;hr size="1" /&gt; &lt;/div&gt;  &lt;p&gt;Output of report is shown on right. I don’t have much data here and my report is not very nice but it works. Now, if you are not too tired or bored, it is time to make your chart very nice and show it to your boss or customer.&lt;/p&gt;  &lt;h3&gt;Conclusion&lt;/h3&gt;  &lt;p&gt;Mixing forms and MVC worlds of ASP.NET doesn’t always have to end up with hard mess. In this posting I showed you how to add simple but pretty generic reports support to your ASP.NET MVC application. Due to good interfacing we achieved separation between forms and MVC templates and linking reports to views is very-very simple. &lt;/p&gt;  &lt;p&gt;Of course, code and interfaces represented here are not production-ready examples. But they give you right direction and you can always improve design of my solution. My point was to illustrate how to mix MVC and forms world in reporting context and I feel like I succeeded this time. What do you think? :)&lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f11%2f21%2fasp-net-mvc-creating-reports-using-chart-control.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f11%2f21%2fasp-net-mvc-creating-reports-using-chart-control.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/ASPNET-MVC-Creating-reports-using-Chart-control"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F11%2F21%2Fasp-net-mvc-creating-reports-using-chart-control.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://www.9efish.com/ASPNET-MVC-Creating-reports-using-Chart-control"&gt;&lt;img alt="顶" src="http://www.9efish.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F11%2F21%2Fasp-net-mvc-creating-reports-using-chart-control.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/ASPNET-MVC-Creating-reports-using-Chart-control"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F11%2F21%2Fasp-net-mvc-creating-reports-using-chart-control.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/ASPNET-MVC-Creating-reports-using-Chart-control"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F11%2F21%2Fasp-net-mvc-creating-reports-using-chart-control.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="4"&gt;&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://servefault.com/ASPNET-MVC-Creating-reports-using-Chart-control"&gt;&lt;img alt="Shout it!" src="http://servefault.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F11%2F21%2Fasp-net-mvc-creating-reports-using-chart-control.aspx&amp;countBackColor=00cc00" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262585" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Graphics/default.aspx">Graphics</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Web+development/default.aspx">Web development</category></item><item><title>Unit Testing and Integration Testing in real projects</title><link>http://weblogs.asp.net/omarzabir/archive/2009/11/21/unit-testing-and-integration-testing-in-real-projects.aspx</link><pubDate>Sat, 21 Nov 2009 10:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262490</guid><dc:creator>oazabir</dc:creator><author>oazabir</author><slash:comments>1</slash:comments><description>&lt;p&gt;I am yet to find a proper sample on how to do realistic Test Driven
Development (TDD) and how to write proper unit tests for complex
business applications, that gives you enough confidence to stop doing
manual tests anymore. Generally &lt;a href="http://www.c-sharpcorner.com/UploadFile/rmcochran/test_driven_development10072006125103PM/test_driven_development.aspx" mce_href="http://www.c-sharpcorner.com/UploadFile/rmcochran/test_driven_development10072006125103PM/test_driven_development.aspx"&gt;the samples&lt;/a&gt;
show you how to test a Stack or a LinkedList, which is far simpler than
testing a typical N-tier application, especially if you are using
Entity Framework or Linq to SQL or some ORM in data access layer, and
doing logging, validation, caching, error handling at middle tier.
There are &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163982.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/cc163982.aspx"&gt;many articles&lt;/a&gt;, &lt;a href="http://www.codeplex.com/xunit#blog" mce_href="http://www.codeplex.com/xunit#blog"&gt;blog posts&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=f60aIlNhMoE" mce_href="http://www.youtube.com/watch?v=f60aIlNhMoE"&gt;video tutorials&lt;/a&gt;
on how to write unit tests, which I believe are all very good starting
points. But all these examples show you basic tests, not good enough to
let your QA team go. So, let me try to show you some realistic unit and
integration test examples which should help you write tests that gives
you confidence and helps you gradually move towards TDD.&amp;nbsp;&amp;nbsp; &lt;/p&gt;  &lt;p&gt;I will show you tests done on my open source project &lt;a href="http://dropthings.omaralzabir.com/" mce_href="http://dropthings.omaralzabir.com/"&gt;Dropthings&lt;/a&gt;,
which is a Web 2.0 AJAX portal built using jQuery, ASP.NET 3.5, Linq to
SQL, Dependency Injection using Unity, caching using Microsoft
Enterprise Library, Velocity and so on. Basically all the hot techs you
can grasp in one shot. The project is a typical N-tier application
where there’s a web layer, a business layer and a data access layer.
Writing unit tests, integration tests and load tests for this project
was challenging, and thus interesting to share so that you can see how
you can implement Unit Testing and Integration Testing in a real
project and gradually get into Test Driven Development.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/omar.metablogapi/7450.image_5F00_4552A35B.png" mce_href="http://weblogs.asp.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/omar.metablogapi/7450.image_5F00_4552A35B.png"&gt;&lt;img src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/omar.metablogapi/0272.image_5F00_thumb_5F00_3050FB1B.png" style="border-width: 0px; display: inline;" mce_style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" alt="image" mce_src="http://weblogs.asp.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/omar.metablogapi/0272.image_5F00_thumb_5F00_3050FB1B.png" width="438" border="0" height="494"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Read
this codeproject article of mine to learn how I did Integration Tests
and Unit Tests using Behavior Driven Development approach:&lt;/p&gt;  &lt;p&gt;Unit Testing and Integration Testing in business applications&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeproject.com/KB/testing/realtesting.aspx" title="http://www.codeproject.com/KB/testing/realtesting.aspx" mce_href="http://www.codeproject.com/KB/testing/realtesting.aspx"&gt;http://www.codeproject.com/KB/testing/realtesting.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you like it, please vote for me.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin: 0px; padding: 0px;" mce_style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fmsmvps.com%2fblogs%2fomar%2farchive%2f2009%2f11%2f21%2funit-testing-and-integration-testing-in-real-projects.aspx" mce_href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fmsmvps.com%2fblogs%2fomar%2farchive%2f2009%2f11%2f21%2funit-testing-and-integration-testing-in-real-projects.aspx" rev="vote-for"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fmsmvps.com%2fblogs%2fomar%2farchive%2f2009%2f11%2f21%2funit-testing-and-integration-testing-in-real-projects.aspx" mce_src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fmsmvps.com%2fblogs%2fomar%2farchive%2f2009%2f11%2f21%2funit-testing-and-integration-testing-in-real-projects.aspx" style="border: 0px none ;" mce_style="border:0px" alt="kick it"&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://dotnetshoutout.com/Submit?url=http%3a%2f%2fmsmvps.com%2fblogs%2fomar%2farchive%2f2009%2f11%2f21%2funit-testing-and-integration-testing-in-real-projects.aspx" rev="vote-for" mce_href="http://dotnetshoutout.com/Submit?url=http%3a%2f%2fmsmvps.com%2fblogs%2fomar%2farchive%2f2009%2f11%2f21%2funit-testing-and-integration-testing-in-real-projects.aspx"&gt;&lt;img src="http://dotnetshoutout.com/image.axd?url=http%3a%2f%2fmsmvps.com%2fblogs%2fomar%2farchive%2f2009%2f11%2f21%2funit-testing-and-integration-testing-in-real-projects.aspx" alt="Shout it" mce_src="http://dotnetshoutout.com/image.axd?url=http%3a%2f%2fmsmvps.com%2fblogs%2fomar%2farchive%2f2009%2f11%2f21%2funit-testing-and-integration-testing-in-real-projects.aspx" style="border: 0px none ;" mce_style="border:0px"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262490" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/omarzabir/archive/tags/.net/default.aspx">.net</category><category domain="http://weblogs.asp.net/omarzabir/archive/tags/BDD/default.aspx">BDD</category><category domain="http://weblogs.asp.net/omarzabir/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/omarzabir/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/omarzabir/archive/tags/TDD/default.aspx">TDD</category><category domain="http://weblogs.asp.net/omarzabir/archive/tags/testing/default.aspx">testing</category><category domain="http://weblogs.asp.net/omarzabir/archive/tags/unit+test/default.aspx">unit test</category></item><item><title>T4MVC 2.5.01: added support for Html.RenderAction and Html.Action</title><link>http://blogs.msdn.com/davidebb/archive/2009/11/20/t4mvc-2-5-01-added-support-for-html-renderaction-and-html-action.aspx</link><pubDate>Sat, 21 Nov 2009 02:10:19 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262326</guid><dc:creator>Latest Microsoft Blogs</dc:creator><author>Latest Microsoft Blogs</author><slash:comments>0</slash:comments><description>To get the latest build of T4MVC: Go to download page on CodePlex &amp;#160; MVC 2 Beta introduces two nice helpers called Html.RenderAction and Html.Action.&amp;#160; Phil Haack described them in detail on his blog , so you may want to read through that before Read More......(&lt;a href="http://blogs.msdn.com/davidebb/archive/2009/11/20/t4mvc-2-5-01-added-support-for-html-renderaction-and-html-action.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262326" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/T4/default.aspx">T4</category><category domain="http://weblogs.asp.net/aspnet-whatsnew/archive/tags/T4MVC/default.aspx">T4MVC</category></item></channel></rss>