<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Javier G. Lozano</title><link>http://lozanotek.com/blog/Default.aspx</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/lozanotek" /><description>Coding Out Loud</description><language>en-US</language><image><link>http://lozanotek.com/blog/Default.aspx</link><url>http://lozanotek.com/blog/images/RSS2Image.gif</url><title>Javier G. Lozano</title><width>77</width><height>60</height></image><copyright>Javier G. Lozano</copyright><generator>Subtext Version 2.1.0.5</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/lozanotek" /><feedburner:info uri="lozanotek" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>41.67822</geo:lat><geo:long>-93.793509</geo:long><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Flozanotek" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Flozanotek" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Flozanotek" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/lozanotek" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Flozanotek" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Flozanotek" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Flozanotek" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item><title>MvcConf 2&amp;ndash; February 8th, 2011</title><link>http://feedproxy.google.com/~r/lozanotek/~3/emeRPqT40ao/mvcconf_2ndash_february_8th_2011.aspx</link><category>ASP.NET MVC</category><category>ASP.NET</category><category>Community</category><category>Conferences</category><category>Web</category><category>Visual Studio</category><category>Tools</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Javier G. Lozano</dc:creator><pubDate>Wed, 19 Jan 2011 22:38:49 PST</pubDate><guid isPermaLink="false">http://lozanotek.com/blog/archive/2011/01/20/mvcconf_2ndash_february_8th_2011.aspx</guid><description>&lt;p&gt;We’re getting ready for the next version of &lt;a href="http://www.mvcconf.com" target="_blank"&gt;MvcConf&lt;/a&gt; on Tuesday, 2/8/2011 from 8AM-5PM CST!&lt;/p&gt;  &lt;h3&gt;What is MvcConf?&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;MvcConf&lt;/strong&gt; is a&lt;strong&gt;&lt;em&gt; virtual conference&lt;/em&gt;&lt;/strong&gt; focused on one thing: writing awesome applications on top of the ASP.Net MVC framework. Your brain will explode from taking in so much hard core technical sessions. Sounds fun eh?  This is a community event and we want the best and brightest sharing what they know.&lt;/p&gt;  &lt;p&gt;We intend to record each session and make them available online for viewing. We intend to make the videos available free of charge, depending on conference sponsorships.&lt;/p&gt;  &lt;h3&gt;Why should I care?&lt;/h3&gt;  &lt;p&gt;If you’re interested in learning more about development with ASP.NET MVC, why not attend a &lt;strong&gt;free&lt;/strong&gt; event (or session) that will aide that cause? Not only do we have community leaders on MVC but also members of the ASP.NET team, including &lt;a href="http://weblogs.asp.net/scottgu" target="_blank"&gt;Scott Guthrie&lt;/a&gt;, &lt;a href="http://www.hanselman.com/blog" target="_blank"&gt;Scott Hanselman&lt;/a&gt;, &lt;a href="http://haacked.com" target="_blank"&gt;Phil Haack&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/jgalloway" target="_blank"&gt;Jon Galloway&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;You really have nothing to lose with this conference, well, except for some bandwidth since this conference is virtual and broadcast through &lt;a href="http://office.microsoft.com/en-us/help/HA101733831033.aspx"&gt;Live Meeting&lt;/a&gt;. :P&lt;/p&gt;  &lt;h3&gt;Conference Details&lt;/h3&gt;  &lt;p&gt;When: &lt;strong&gt;Tuesday, February 8th, 2011 8AM – 5PM CST&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Cost: &lt;strong&gt;FREE&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Where: Virtual (Live Meeting)&lt;/p&gt;  &lt;p&gt;Register here: &lt;a href="http://mvcconf.com/attend"&gt;&lt;strong&gt;http://mvcconf.com/attend&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We’re still working through the final sessions, so the schedule will be posted in a few days. Please bare with us as we coordinate these logistics :)&lt;/p&gt;  &lt;p&gt;I’ll see you at MvcConf 2!&lt;/p&gt;&lt;img src="http://lozanotek.com/blog/aggbug/20142.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=emeRPqT40ao:B9qgaxD6KrU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=emeRPqT40ao:B9qgaxD6KrU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=emeRPqT40ao:B9qgaxD6KrU:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=emeRPqT40ao:B9qgaxD6KrU:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=emeRPqT40ao:B9qgaxD6KrU:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=emeRPqT40ao:B9qgaxD6KrU:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=emeRPqT40ao:B9qgaxD6KrU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=emeRPqT40ao:B9qgaxD6KrU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=emeRPqT40ao:B9qgaxD6KrU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=emeRPqT40ao:B9qgaxD6KrU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=emeRPqT40ao:B9qgaxD6KrU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=emeRPqT40ao:B9qgaxD6KrU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=emeRPqT40ao:B9qgaxD6KrU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/20142.aspx</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/commentRss/20142.aspx</wfw:commentRss><feedburner:origLink>http://lozanotek.com/blog/archive/2011/01/20/mvcconf_2ndash_february_8th_2011.aspx</feedburner:origLink></item><item><title>Fall 2010 DevConnections Wrap Up</title><link>http://feedproxy.google.com/~r/lozanotek/~3/Cq6GgRFRaWE/fall_2010_devconnections_wrap_up.aspx</link><category>.NET</category><category>ASP.NET</category><category>ASP.NET MVC</category><category>Conferences</category><category>Community</category><category>Development</category><category>Open Source</category><category>Presentations</category><category>Visual Studio</category><category>Web</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Javier G. Lozano</dc:creator><pubDate>Sat, 06 Nov 2010 14:03:02 PDT</pubDate><guid isPermaLink="false">http://lozanotek.com/blog/archive/2010/11/06/fall_2010_devconnections_wrap_up.aspx</guid><description>&lt;p&gt;Last week, I had the pleasure of presenting at DevConnections at the Mandalay Bay in Las Vegas, NV. I had a total blast interacting with attendees, fellow speakers and checking out the vendor hall. The logistics for the conference were remarkable given there was approximately 2,800 people in attendance!&lt;/p&gt;  &lt;p&gt;For those of you that attended my presentations, thank you! I hope you were able to get something out of them; I had a blast presenting and interacting with you in each of them.  Also, I had a great time with the open spaces sessions. There was lots of good interaction from the people in the ones I participated in.&lt;/p&gt;  &lt;p&gt;As a recap, I’ve mentioned that my presentation material is out on Github, so you can download both slides and demos very easily. If you didn’t get a chance to write the location, please use the links below:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://github.com/lozanotek/opensource" target="_blank"&gt;APG201: Open Source Tools Every .NET Developer Should Use&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://github.com/lozanotek/mvcextensions" target="_blank"&gt;AMV305: Oh ASP.NET MVC. How Extensible Art Thou?&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://github.com/lozanotek/zenofmvc" target="_blank"&gt;AMV204: The Zen of ASP.NET and MVC&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Again, thanks for checking out my session and I hope that you too had much of a blast as I did! If you have any questions or comments, please feel free to ping me.&lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;&lt;img src="http://lozanotek.com/blog/aggbug/20141.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=Cq6GgRFRaWE:Z4C9nrNVVNE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=Cq6GgRFRaWE:Z4C9nrNVVNE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=Cq6GgRFRaWE:Z4C9nrNVVNE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=Cq6GgRFRaWE:Z4C9nrNVVNE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=Cq6GgRFRaWE:Z4C9nrNVVNE:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=Cq6GgRFRaWE:Z4C9nrNVVNE:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=Cq6GgRFRaWE:Z4C9nrNVVNE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=Cq6GgRFRaWE:Z4C9nrNVVNE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=Cq6GgRFRaWE:Z4C9nrNVVNE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=Cq6GgRFRaWE:Z4C9nrNVVNE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=Cq6GgRFRaWE:Z4C9nrNVVNE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=Cq6GgRFRaWE:Z4C9nrNVVNE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=Cq6GgRFRaWE:Z4C9nrNVVNE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/20141.aspx</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/commentRss/20141.aspx</wfw:commentRss><feedburner:origLink>http://lozanotek.com/blog/archive/2010/11/06/fall_2010_devconnections_wrap_up.aspx</feedburner:origLink></item><item><title>Extending MVC Views with DynamicObject</title><link>http://feedproxy.google.com/~r/lozanotek/~3/d8GSuM-APYY/extending_mvc_views_with_dynamicobject.aspx</link><category>ASP.NET</category><category>.NET</category><category>ASP.NET MVC</category><category>Web</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Javier G. Lozano</dc:creator><pubDate>Wed, 20 Oct 2010 22:45:44 PDT</pubDate><guid isPermaLink="false">http://lozanotek.com/blog/archive/2010/10/21/extending_mvc_views_with_dynamicobject.aspx</guid><description>&lt;p&gt;The other day I was working on some features for &lt;a title="The MVC Turbine Project" href="http://mvcturbine.codeplex.com" target="_blank"&gt;MVC Turbine&lt;/a&gt; when I got a random idea about how we can use a new feature that comes with the Razor view engine (VE). This blog post hopefully will help out some of you in your development or least get your creative juices going.&lt;/p&gt;  &lt;h3&gt;@View with Razor Views&lt;/h3&gt;  &lt;p&gt;One of the new features that ships with the Razor VE is the ability to set &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspx" target="_blank"&gt;ViewDataDictionary&lt;/a&gt;&lt;/strong&gt; values through the use of a &lt;a href="http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx" target="_blank"&gt;DynamicObject&lt;/a&gt; property. The following code shows how to do this:&lt;/p&gt; &lt;script src="http://gist.github.com/637862.js?file=DynamicSample.cs"&gt;&lt;/script&gt;  &lt;p&gt;The &lt;strong&gt;&lt;em&gt;ViewModel.Message&lt;/em&gt;&lt;/strong&gt; call is the equivalent of &lt;strong&gt;&lt;em&gt;ViewData[“Message”]&lt;/em&gt;&lt;/strong&gt;, all which is done via the magic of DynamicObject. Internally, the controller uses an instance of the internal type &lt;strong&gt;DynamicViewDataDictionary&lt;/strong&gt; in order to handle the get/set for values.  This same instance is used to set the value of the &lt;strong&gt;&lt;em&gt;View&lt;/em&gt;&lt;/strong&gt; property for the &lt;strong&gt;WebViewPage&lt;/strong&gt; type, the base type for all Razor-based views.  Taking this simple approach we will implement something that will allows our views to tap into common services without dealing with the specifics of service resolution.&lt;/p&gt;  &lt;h3&gt;@Service Extension Point&lt;/h3&gt;  &lt;p&gt;Let’s first start by looking at the DynamicObject property that will wire things up for us.  What we need here is a way to link a property name to an object instance that will satisfy the method call:&lt;/p&gt; &lt;script src="http://gist.github.com/637949.js?file=IndexView.cs"&gt;&lt;/script&gt;  &lt;p&gt;We need to translate the &lt;strong&gt;&lt;em&gt;@Service.MessageService.GetWelcomeMessage()&lt;/em&gt;&lt;/strong&gt; piece into a method call. We do this by taking the convention of &lt;strong&gt;&lt;em&gt;@Service.ServiceContract.Method()&lt;/em&gt;&lt;/strong&gt; and providing a way to enforce it. We do this via the &lt;strong&gt;DynamicLocator&lt;/strong&gt; class:&lt;/p&gt; &lt;script src="http://gist.github.com/637977.js?file=DynamicLocator.cs"&gt;&lt;/script&gt;  &lt;p&gt;As you can see, the DynamicLocator is a type that inherits DynamicObject and uses &lt;strong&gt;&lt;a href="http://structuremap.net/structuremap/index.html" target="_blank"&gt;StructureMap&lt;/a&gt;&lt;/strong&gt; to do the heavy lifting of service resolution.  Since we’re treating every property as the service contract, we need to override the &lt;a href="http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.trygetmember.aspx" target="_blank"&gt;TryGetMember&lt;/a&gt; method to get the instance of the type that implements said contract. If the name doesn’t match a registered type, we need to throw an exception to inform the invalid service type. From here what we need to do is wire this type into the view, more specifically we need to wire this to the &lt;strong&gt;Service&lt;/strong&gt; property of the view. We can do this by providing our own base view class:&lt;/p&gt; &lt;script src="http://gist.github.com/637993.js?file=DynamicPage.cs"&gt;&lt;/script&gt;  &lt;p&gt;This &lt;strong&gt;DynamicPage&lt;/strong&gt; type exposes a &lt;strong&gt;&lt;em&gt;Service&lt;/em&gt;&lt;/strong&gt; which, as you can see, is a dynamic object; a &lt;strong&gt;DynamicLocator&lt;/strong&gt; type to be more specific.  Now, we all need to do is tell the Razor view engine to use this as the base type for the views it generates.  We do this by modifying the &lt;strong&gt;&lt;em&gt;Web.config&lt;/em&gt;&lt;/strong&gt; within the &lt;em&gt;Views&lt;/em&gt; folder:&lt;/p&gt; &lt;script src="http://gist.github.com/638000.js?file=viewwebconfig.xml"&gt;&lt;/script&gt;  &lt;p&gt;Now we run things and see the following output:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/ExtendingMVCViewswithDynamicObject_13246/Capture.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Capture" border="0" alt="Capture" src="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/ExtendingMVCViewswithDynamicObject_13246/Capture_thumb.png" width="674" height="497" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Wrap Up&lt;/h3&gt;  &lt;p&gt;I hope this blog post can help some of you out, or at least get your creative juices flowing. As you can see, it’s pretty simple to build your own conventions and flow once you get to grok the pieces that make up the framework.  As always, &lt;a href="http://github.com/jglozano/samples/tree/master/DynamicView/" target="_blank"&gt;check out the source&lt;/a&gt; and feel free to leave any comments!&lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;&lt;img src="http://lozanotek.com/blog/aggbug/20140.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=d8GSuM-APYY:A1KhVOrU0l4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=d8GSuM-APYY:A1KhVOrU0l4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=d8GSuM-APYY:A1KhVOrU0l4:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=d8GSuM-APYY:A1KhVOrU0l4:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=d8GSuM-APYY:A1KhVOrU0l4:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=d8GSuM-APYY:A1KhVOrU0l4:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=d8GSuM-APYY:A1KhVOrU0l4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=d8GSuM-APYY:A1KhVOrU0l4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=d8GSuM-APYY:A1KhVOrU0l4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=d8GSuM-APYY:A1KhVOrU0l4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=d8GSuM-APYY:A1KhVOrU0l4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=d8GSuM-APYY:A1KhVOrU0l4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=d8GSuM-APYY:A1KhVOrU0l4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/20140.aspx</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/commentRss/20140.aspx</wfw:commentRss><feedburner:origLink>http://lozanotek.com/blog/archive/2010/10/21/extending_mvc_views_with_dynamicobject.aspx</feedburner:origLink></item><item><title>Dependency Injection for Filters in MVC3</title><link>http://feedproxy.google.com/~r/lozanotek/~3/sJehvRLmXzA/dependency_injection_for_filters_in_mvc3.aspx</link><category>.NET</category><category>ASP.NET MVC</category><category>ASP.NET</category><category>Design Patterns</category><category>Development</category><category>Web</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Javier G. Lozano</dc:creator><pubDate>Tue, 12 Oct 2010 21:37:39 PDT</pubDate><guid isPermaLink="false">http://lozanotek.com/blog/archive/2010/10/12/dependency_injection_for_filters_in_mvc3.aspx</guid><description>&lt;p&gt;One of the new features of the Dependency Inject (DI) components from MVC3 is something called a IFilterProvider.  The purpose of this component is to provide a simpler way for MVC applications to interact with filters (action, exception, result, etc.). In the previous versions, trying to achieve something like providing DI support to filters was doable, it just required deeper integration into the MVC runtime.  The IFilterProvider interface is defined as:&lt;/p&gt; &lt;script src="http://gist.github.com/623341.js?file=IFilterProvider.cs"&gt;&lt;/script&gt;  &lt;p&gt;As you can see, it’s a pretty simple interface that can enable lots of opportunities if used in the right context.  The MVC bits ship with an implementation named &lt;strong&gt;FilterAttributeFilterProvider&lt;/strong&gt; that parses the attributes defined on actions and controllers and returns an aggregated list for the runtime to process. So, how can we leverage this class to provide DI to these attributes? Let’s take a look :)&lt;/p&gt;  &lt;h3&gt;Injecting Dependencies into Attributes&lt;/h3&gt;  &lt;p&gt;For this sample, I will use &lt;a href="http://ninject.org" target="_blank"&gt;&lt;strong&gt;Ninject&lt;/strong&gt;&lt;/a&gt; as the DI container to inject, via properties, dependencies into the attributes. The dependency is a simple &lt;strong&gt;IMessageService&lt;/strong&gt;:&lt;/p&gt; &lt;script src="http://gist.github.com/623391.js?file=Dependency.cs"&gt;&lt;/script&gt;  &lt;p&gt;And it’s consumed by the &lt;strong&gt;MessageAttribute&lt;/strong&gt; class:&lt;/p&gt; &lt;script src="http://gist.github.com/623402.js?file=MessageAttribute.cs"&gt;&lt;/script&gt;  &lt;p&gt;The &lt;strong&gt;MessageAttribute&lt;/strong&gt; class is using Ninject’s Inject attribute to inform the container that &lt;strong&gt;IMessageService&lt;/strong&gt; needs to be injected as a property; in other words, inject after the creation of the attribute.  From this point, all we need to allow for the injection to happen – this is where &lt;strong&gt;FilterAttributeFilterProvider&lt;/strong&gt; comes into play with a few minor tweaks:&lt;/p&gt; &lt;script src="http://gist.github.com/623443.js?file=InjectableFilterProvider.cs"&gt;&lt;/script&gt;  &lt;p&gt;By overriding the &lt;strong&gt;&lt;em&gt;GetFilters&lt;/em&gt;&lt;/strong&gt; method and using the &lt;strong&gt;IKernel&lt;/strong&gt; instance that has the &lt;strong&gt;IMessageService&lt;/strong&gt; (or any other) registration, all of the work can be contained within the &lt;strong&gt;InjectableFilterProvider&lt;/strong&gt; class. This allows us to easily re-use this provider within any MVC3 application (that uses Ninject of course!) and provide DI support to any attributes for any controller.  From here, all we need to do is register the filter and pass it the correct container instance:&lt;/p&gt; &lt;script src="http://gist.github.com/623457.js?file=Global.asax.cs"&gt;&lt;/script&gt;  &lt;p&gt;As you can see these new DI features within MVC3 make things that used to be hard (or awkward) pretty straightforward with minimal work. Feel free to check out the &lt;a href="http://github.com/jglozano/samples/tree/master/InjectableFilters/" target="_blank"&gt;&lt;strong&gt;full sample out on Github&lt;/strong&gt;&lt;/a&gt; and leave any questions as comments!&lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;&lt;img src="http://lozanotek.com/blog/aggbug/20139.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=sJehvRLmXzA:k5pfHRpVbCg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=sJehvRLmXzA:k5pfHRpVbCg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=sJehvRLmXzA:k5pfHRpVbCg:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=sJehvRLmXzA:k5pfHRpVbCg:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=sJehvRLmXzA:k5pfHRpVbCg:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=sJehvRLmXzA:k5pfHRpVbCg:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=sJehvRLmXzA:k5pfHRpVbCg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=sJehvRLmXzA:k5pfHRpVbCg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=sJehvRLmXzA:k5pfHRpVbCg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=sJehvRLmXzA:k5pfHRpVbCg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=sJehvRLmXzA:k5pfHRpVbCg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=sJehvRLmXzA:k5pfHRpVbCg:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=sJehvRLmXzA:k5pfHRpVbCg:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/20139.aspx</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/commentRss/20139.aspx</wfw:commentRss><feedburner:origLink>http://lozanotek.com/blog/archive/2010/10/12/dependency_injection_for_filters_in_mvc3.aspx</feedburner:origLink></item><item><title>POCO Results for MVC Actions</title><link>http://feedproxy.google.com/~r/lozanotek/~3/dMEVy3TIgxU/poco_results_for_mvc_actions.aspx</link><category>ASP.NET MVC</category><category>ASP.NET</category><category>Web</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Javier G. Lozano</dc:creator><pubDate>Wed, 06 Oct 2010 21:51:56 PDT</pubDate><guid isPermaLink="false">http://lozanotek.com/blog/archive/2010/10/06/poco_results_for_mvc_actions.aspx</guid><description>&lt;p&gt;Lately, I’ve been working a lot with applications that expose JSON-based &lt;em&gt;services&lt;/em&gt; to clients that care to consume their data. All of these &lt;em&gt;services&lt;/em&gt; are nothing more than plain Controllers that return a ViewModel that’s rendered as JSON. You might be saying to yourself, “Big deal! All you’re doing is returning a &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult.aspx"&gt;JsonResult&lt;/a&gt; to the client! Tell us something new…” Well, as a matter of fact, that’s the whole purpose of this post. ;)&lt;/p&gt;  &lt;h3&gt;How Do Things Currently Work?&lt;/h3&gt;  &lt;p&gt;Right now within MVC, you have a explicit convention that a controller must follow for any action it exposes; they must return a type of ActionResult for the runtime to process it correctly.  However, if you have an action that returns a simple value type, ie. integers, bool, Guid, etc. the value assigned to the type is returned. In other words, if you have this controller:&lt;/p&gt; &lt;script src="http://gist.github.com/612788.js?file=ContentResult_Sample.cs"&gt;&lt;/script&gt;  &lt;p&gt;The following is returned by the runtime:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/contentresult_guid_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="contentresult_guid" border="0" alt="contentresult_guid" src="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/contentresult_guid_thumb_2.png" width="639" height="236" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Since the value is not an ActionResult, the runtime takes the value and converts its string representation. In this case, the Guid’s value is rendered out as a string on the browser. But what happens when we try to return a complex type, such as:&lt;/p&gt; &lt;script src="http://gist.github.com/614499.js?file=contentresult_complextype.cs"&gt;&lt;/script&gt;  &lt;p&gt;As you can see, it’s not quite what we expected:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/contentresult_complex.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="contentresult_complex" border="0" alt="contentresult_complex" src="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/contentresult_complex_thumb.png" width="639" height="236" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What we want instead is to provide the value (and structure) of the complex type back to the caller as JSON…so how do we do it?&lt;/p&gt;  &lt;h3&gt;Extending the MVC Runtime&lt;/h3&gt;  &lt;p&gt;In the past &lt;a href="http://lozanotek.com/blog/archive/2009/08/11/Inferred_Controller_Actions.aspx"&gt;I’ve blogged about inferred actions&lt;/a&gt;, where I discussed the usage of an ActionInvoker to handle the *dirty* work needed for this feature to work. To accomplish what we need in this case, again we call upon the power of the ActionInvoker (ControllerActionInvoker to be exact) along with an ActionResult, so it can hold the value (result) from our action.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.controlleractioninvoker.aspx" target="_blank"&gt;ControllerActionInvoker&lt;/a&gt; class has a method called &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.controlleractioninvoker.createactionresult.aspx" target="_blank"&gt;CreateActionResult&lt;/a&gt; which is called after the action method is executed. It is within this method that ContentResult is created for the cases we stated earlier. So, let’s provide our own implementation, &lt;a href="http://github.com/jglozano/samples/blob/master/PocoActions/src/Controllers/PocoInvoker.cs" target="_blank"&gt;PocoInvoker&lt;/a&gt;, that does some of the masquerading of our complex type:&lt;/p&gt; &lt;script src="http://gist.github.com/614518.js?file=PocoInvoker.cs"&gt;&lt;/script&gt;  &lt;p&gt;As you can see the logic is pretty simple:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If the actionResultValue &lt;strong&gt;is not&lt;/strong&gt; an ActionResult…       &lt;ul&gt;       &lt;li&gt;Set it as the ViewData.Model value – in case we want to use it from within the View’s context &lt;/li&gt;        &lt;li&gt;Create a new PocoResult to wrap the value and comply with the MVC runtime &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;If the actionResultValue &lt;strong&gt;is an&lt;/strong&gt; ActionResult       &lt;ul&gt;       &lt;li&gt;Continue as normal! &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;From here, most of the work is done by the &lt;a href="http://github.com/jglozano/samples/blob/master/PocoActions/src/Controllers/PocoResult.cs" target="_blank"&gt;PocoResult&lt;/a&gt; class: &lt;/p&gt; &lt;script src="http://gist.github.com/614528.js?file=PocoResult.cs"&gt;&lt;/script&gt;  &lt;p&gt;In this sample, the PocoResult class uses &lt;a href="http://james.newtonking.com/pages/json-net.aspx" target="_blank"&gt;Newtonsoft’s JSON.NET&lt;/a&gt; as the JSON serializer to render out the complex value out to the caller.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;As the comment in the source states, you can use the built &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx" target="_blank"&gt;JavaScriptSerializer&lt;/a&gt; or even inherit from JsonResult and omit all the extra work. I chose JSON.NET since that’s the JSON serializer I used across my projects.&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Trying Out the Code&lt;/h3&gt;  &lt;p&gt;I created an application that interacts with simple person data:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/poco_resuls_home.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="poco_resuls_home" border="0" alt="poco_resuls_home" src="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/poco_resuls_home_thumb.png" width="639" height="508" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This application provides simple CRUD operations for creating a &lt;a href="http://github.com/jglozano/samples/blob/master/PocoActions/src/Models/Person.cs" target="_blank"&gt;Person&lt;/a&gt; type.  If you look at the code for the Person and &lt;a href="http://github.com/jglozano/samples/blob/master/PocoActions/src/Controllers/PersonController.cs" target="_blank"&gt;PersonController&lt;/a&gt; you will run into this little nugget:&lt;/p&gt; &lt;script src="http://gist.github.com/614542.js?file=PersonController.cs"&gt;&lt;/script&gt;  &lt;p&gt;The &lt;strong&gt;GetList&lt;/strong&gt; action returns an IList&amp;lt;Person&amp;gt; which contains the values as specified above.  However, when this action method is called the list is returned as JSON:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/poco_results_jsonlist.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="poco_results_jsonlist" border="0" alt="poco_results_jsonlist" src="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/poco_results_jsonlist_thumb.png" width="646" height="508" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;One very important thing to keep in mind is the concept of JSON Hijacking.  &lt;a href="http://haacked.com/archive/2009/06/25/json-hijacking.aspx" target="_blank"&gt;Phil Haack has a great post describing how this type of attack works&lt;/a&gt; and how ASP.NET MVC prevents these types of attacks from happening.  However, as &lt;a href="http://mhinze.com/json-hijacking-in-asp-net-mvc-2/" target="_blank"&gt;Matt Hinze blogs&lt;/a&gt;, at times we might need to override this behavior for GET requests if we’re creating REST-like services (the purpose of this blog post). So we can implement a simple work around for types that are IEnumerable that wraps the result within a Data element in order to provide &lt;em&gt;safe&lt;/em&gt; JSON:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/safe_json.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="safe_json" border="0" alt="safe_json" src="http://lozanotek.com/blog/images/lozanotek_com/blog/WindowsLiveWriter/POCOResultsforMVCActions_137B7/safe_json_thumb.png" width="646" height="508" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p /&gt;  &lt;p&gt;In the end, it’s up to you the developer to decide your comfort with these techniques and how best to apply them to your everyday work. I hope this post has provided some knowledge on how you can leverage the ASP.NET MVC runtime to it’s fullest.&lt;/p&gt;  &lt;p&gt;Feel free to &lt;a href="http://github.com/jglozano/samples/tree/master/PocoActions/" target="_blank"&gt;checkout the code out on github&lt;/a&gt; and ask any questions via comments.&lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;&lt;img src="http://lozanotek.com/blog/aggbug/20138.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=dMEVy3TIgxU:l7I9XNNJ560:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=dMEVy3TIgxU:l7I9XNNJ560:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=dMEVy3TIgxU:l7I9XNNJ560:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=dMEVy3TIgxU:l7I9XNNJ560:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=dMEVy3TIgxU:l7I9XNNJ560:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=dMEVy3TIgxU:l7I9XNNJ560:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=dMEVy3TIgxU:l7I9XNNJ560:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=dMEVy3TIgxU:l7I9XNNJ560:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=dMEVy3TIgxU:l7I9XNNJ560:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=dMEVy3TIgxU:l7I9XNNJ560:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=dMEVy3TIgxU:l7I9XNNJ560:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/lozanotek?a=dMEVy3TIgxU:l7I9XNNJ560:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/lozanotek?i=dMEVy3TIgxU:l7I9XNNJ560:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/20138.aspx</wfw:comment><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lozanotek.com/blog/comments/commentRss/20138.aspx</wfw:commentRss><feedburner:origLink>http://lozanotek.com/blog/archive/2010/10/06/poco_results_for_mvc_actions.aspx</feedburner:origLink></item></channel></rss>

