<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7257825023446459595</id><updated>2012-01-28T15:18:35.940-08:00</updated><title type='text'>Jesse Naiman learns ASP.NET MVC</title><subtitle type='html'>Jesse Naiman tries out the latest ASP.NET MVC and other crazy code stuff like SubSonic and jquery</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alt-net-guild.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7257825023446459595/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://alt-net-guild.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jesse Naiman</name><uri>http://www.blogger.com/profile/13495232701555856437</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7257825023446459595.post-7777619365841732475</id><published>2008-05-07T09:28:00.000-07:00</published><updated>2008-05-08T11:37:20.778-07:00</updated><title type='text'>Simple ASP.NET MVC jquery ajax call</title><content type='html'>&lt;p&gt;One of the coolest features of ASP.NET MVC is seeing html again and being  able to manipulate it in ways that the php folks have been doing for years.  &lt;/p&gt;&lt;p&gt;I have been guilty of forgetting that javascript and html are the key  components to an ajax call and been using ajax.net instead of digging into the  heart of the XMLHttpRequest Object. Fortunately a number of javascript libraries  that help ease the creation of a real javascript ajax call. For this example I  will be using jquery, though it is important to note that this same technique  will work with any of the other javascript helper libraries available that  include ajax capabilities. If you feel especially hands-on you can try this  sample with the classic javascript code.  &lt;/p&gt;&lt;p&gt;For this example you will need jquery, JSON.NET, and ASP.NET MVC Preview 3  &lt;/p&gt;&lt;p&gt;Step 1 : HTML  &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;pre    style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: rgb(244, 244, 244); line-height: 12pt; width: 100%;font-family:Consolas,'Courier New',Courier,Monospace;font-size:8pt;color:black;"&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Sitemap Manager&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;script src=&lt;span style="color: rgb(0, 96, 128);"&gt;"../../Scripts/jquery-1.2.3.js"&lt;/span&gt; type=&lt;span style="color: rgb(0, 96, 128);"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type=&lt;span style="color: rgb(0, 96, 128);"&gt;"text/javascript"&lt;/span&gt; src=&lt;span style="color: rgb(0, 96, 128);"&gt;"../../Scripts/EditTree.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;div id=&lt;span style="color: rgb(0, 96, 128);"&gt;"tree"&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;ul id=&lt;span style="color: rgb(0, 96, 128);"&gt;'browser'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;'filetree'&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;li id=&lt;span style="color: rgb(0, 96, 128);"&gt;'2'&lt;/span&gt;&amp;gt;&amp;lt;span &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;"folder"&lt;/span&gt; onclick=&lt;span style="color: rgb(0, 96, 128);"&gt;'javascript:getNodeDetails(2)'&lt;/span&gt;&amp;gt;Home&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;    &amp;lt;li id=&lt;span style="color: rgb(0, 96, 128);"&gt;'3'&lt;/span&gt;&amp;gt;&amp;lt;span &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;"folder"&lt;/span&gt; onclick=&lt;span style="color: rgb(0, 96, 128);"&gt;'javascript:getNodeDetails(3)'&lt;/span&gt;&amp;gt;Recordings&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;    &amp;lt;li id=&lt;span style="color: rgb(0, 96, 128);"&gt;'4'&lt;/span&gt;&amp;gt;&amp;lt;span &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;"folder"&lt;/span&gt; onclick=&lt;span style="color: rgb(0, 96, 128);"&gt;'javascript:getNodeDetails(4)'&lt;/span&gt;&amp;gt;Store Locations&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;form id=&lt;span style="color: rgb(0, 96, 128);"&gt;"NodeDetailsForm"&lt;/span&gt; action=&lt;span style="color: rgb(0, 96, 128);"&gt;"SaveNode"&lt;/span&gt; method=&lt;span style="color: rgb(0, 96, 128);"&gt;"post"&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;fieldset&amp;gt;&lt;br /&gt;    &amp;lt;legend&amp;gt;Menu Link Details&amp;lt;/legend&amp;gt;&lt;br /&gt;    &amp;lt;input type=&lt;span style="color: rgb(0, 96, 128);"&gt;"hidden"&lt;/span&gt; name=&lt;span style="color: rgb(0, 96, 128);"&gt;"hfSitemapId"&lt;/span&gt; id=&lt;span style="color: rgb(0, 96, 128);"&gt;"hfSitemapId"&lt;/span&gt; /&amp;gt;&lt;br /&gt;    &amp;lt;label &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;"txtMenuName"&lt;/span&gt;&amp;gt;&lt;br /&gt;        MenuName&amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;input type=&lt;span style="color: rgb(0, 96, 128);"&gt;"text"&lt;/span&gt; name=&lt;span style="color: rgb(0, 96, 128);"&gt;"txtMenuName"&lt;/span&gt; id=&lt;span style="color: rgb(0, 96, 128);"&gt;"txtMenuName"&lt;/span&gt; /&amp;gt;&lt;br /&gt;    &amp;lt;br /&amp;gt;&lt;br /&gt;    &amp;lt;label &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;"txtHref"&lt;/span&gt;&amp;gt;&lt;br /&gt;        LinkHref&amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;input type=&lt;span style="color: rgb(0, 96, 128);"&gt;"text"&lt;/span&gt; name=&lt;span style="color: rgb(0, 96, 128);"&gt;"txtHref"&lt;/span&gt; id=&lt;span style="color: rgb(0, 96, 128);"&gt;"txtHref"&lt;/span&gt; /&amp;gt;&lt;br /&gt;    &amp;lt;br /&amp;gt;&lt;br /&gt;    &amp;lt;input type=&lt;span style="color: rgb(0, 96, 128);"&gt;"submit"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(0, 96, 128);"&gt;"submit"&lt;/span&gt; id=&lt;span style="color: rgb(0, 96, 128);"&gt;"submit-button"&lt;/span&gt; name=&lt;span style="color: rgb(0, 96, 128);"&gt;"submit-button"&lt;/span&gt; /&amp;gt;&lt;br /&gt;&amp;lt;/fieldset&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The form tag could also be replaced with: &lt;%=using(Html.Form("Sitemap",  "SaveNode")){ %&gt;  &lt;/p&gt;&lt;p&gt;Step 2 : Javascript  &lt;/p&gt;&lt;p&gt;I wanted to keep this first example as simple as possible to illustrate how  easy it is to use jquery ajax instead of ajax.net. The $ operator is the heart  of the jquery library, for a better explanation head over to the site and  investigate, as there are numerous other articles written about this library.  For this example I am going to refrain from using the $ operator everywhere  because I don't want to intimidate the newcommers.  &lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: rgb(244, 244, 244); line-height: 12pt; width: 100%; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; color: black;"&gt;function getNodeDetails(id)&lt;br /&gt;{&lt;br /&gt; $.getJSON(&lt;span style="color: rgb(0, 96, 128);"&gt;"NodeClicked?id="&lt;/span&gt;+id,&lt;br /&gt;     function(result){&lt;br /&gt;         document.getElementById(&lt;span style="color: rgb(0, 96, 128);"&gt;'hfMenuID'&lt;/span&gt;).&lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt; = result.MenuID;&lt;br /&gt;         document.getElementById(&lt;span style="color: rgb(0, 96, 128);"&gt;"txtMenuName"&lt;/span&gt;).&lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt; = result.MenuName;&lt;br /&gt;         document.getElementById(&lt;span style="color: rgb(0, 96, 128);"&gt;'txtHref'&lt;/span&gt;).&lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt; = result.LinkName;&lt;br /&gt; });&lt;br /&gt;} &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;getNodeDetails(id) calls $.getJSON will send a HttpGet command to the url  specified. The controller class in asp.net mvc will attempt to find an action to  match the url ("NodeClicked").  &lt;/p&gt;&lt;p&gt;Once the result is recieved from the url the function(result) portion will be  run, filling the html elements with appropriate values is fairly straight  forward from here. Notice how clean and friendly javascript looks using json,  it's identical to the C# code...  &lt;/p&gt;&lt;p&gt;Step 3 : The Controller  &lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;pre face="Consolas,'Courier New',Courier,Monospace" size="8pt" color="black" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: rgb(244, 244, 244); line-height: 12pt; width: 100%;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; ActionResult NodeClicked()&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; id = &lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;.ReadFromRequest(&lt;span style="color: rgb(0, 96, 128);"&gt;"id"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;  MerriweatherDataContext db = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; MerriweatherDataContext();&lt;br /&gt;&lt;br /&gt;  var node = (from s &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; db.MenuLayouts&lt;br /&gt;              &lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt; s.MenuID == Convert.ToInt32(id)&lt;br /&gt;              select &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; { s.MenuName, s.LinkName }).First();&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; json = JavaScriptConvert.SerializeObject(node);&lt;br /&gt;  Response.Write(json);&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;First I grab the "id" parameter from the querystring and return a custom  select statement. I tried this example without the custom select statement and  ended up with a "self referencing loop" error, so I strongly advice considering  what data you need and returning only the relevant fields.  &lt;/p&gt;&lt;p&gt;Next I use JSON.NET to serialize the the node object into a json string.  &lt;/p&gt;&lt;p&gt;Instead of using RenderView(), I use Response.Write which allows the  javascript function to interpret the json result.  &lt;/p&gt;&lt;p&gt;I'm using MVC Preview 3 and as a result the controller action requires  something to be returned, so I return null. If anyone knows of a more elegant  solution I would love to hear the solution.  &lt;/p&gt;&lt;p&gt;Finally the code I am sharing is part of a larger cms project that I am  working on and hope to release as an open source project eventually...but really  don't we have enough custom cms solutions out there already?  &lt;/p&gt;&lt;p&gt;*Before anyone flames me the DataContext object should not be called from the  controller but for the purpose of this example I'm ignoring that piece of logic.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7257825023446459595-7777619365841732475?l=alt-net-guild.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alt-net-guild.blogspot.com/feeds/7777619365841732475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7257825023446459595&amp;postID=7777619365841732475' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7257825023446459595/posts/default/7777619365841732475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7257825023446459595/posts/default/7777619365841732475'/><link rel='alternate' type='text/html' href='http://alt-net-guild.blogspot.com/2008/05/simple-aspnet-mvc-jquery-ajax-call.html' title='Simple ASP.NET MVC jquery ajax call'/><author><name>Jesse Naiman</name><uri>http://www.blogger.com/profile/13495232701555856437</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7257825023446459595.post-5428226695222548323</id><published>2008-05-02T10:26:00.001-07:00</published><updated>2008-05-07T11:15:16.934-07:00</updated><title type='text'>Jesse Naiman - Introduction</title><content type='html'>Before I get started I want to send a thank you out to &lt;a href="http://blog.wekeroad.com/"&gt;Rob Conery&lt;/a&gt;, &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Gu&lt;/a&gt;, &lt;a href="http://haacked.com/"&gt;Phil Haack&lt;/a&gt;, &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt;, and all the other amazing bloggers out there for helping me reach a point where I feel that I can contribute to the community.&lt;br /&gt;&lt;br /&gt;This is my first technical blog so please be forgiving, as I'm bound to publish a few errors. I'm going to try to write articles that fill in the blanks in some of the larger topics that have recently emerged.&lt;br /&gt;&lt;br /&gt;There's a lot of great information already out on the web, so I'm going to try not to repeat anything that has already been said. My current focus is on asp.net mvc, unit testing, mocking frameworks, svn, jquery, subsonic, linq and anything else that happens to catch my eye.&lt;br /&gt;&lt;br /&gt;This blog and myself cater to the perpetual beginner who understand that knowledge has no definitive end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7257825023446459595-5428226695222548323?l=alt-net-guild.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alt-net-guild.blogspot.com/feeds/5428226695222548323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7257825023446459595&amp;postID=5428226695222548323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7257825023446459595/posts/default/5428226695222548323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7257825023446459595/posts/default/5428226695222548323'/><link rel='alternate' type='text/html' href='http://alt-net-guild.blogspot.com/2008/05/introduction.html' title='Jesse Naiman - Introduction'/><author><name>Jesse Naiman</name><uri>http://www.blogger.com/profile/13495232701555856437</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7257825023446459595.post-5826702288753913395</id><published>2008-05-02T09:25:00.000-07:00</published><updated>2008-05-02T11:32:47.233-07:00</updated><title type='text'>Subsonic Integration with Visual Studio</title><content type='html'>&lt;p&gt;Getting SubCommander to work properly in visual studio is a little tricky. Luckily Rob Conery's excellent &lt;a href="http://subsonicproject.com/subcommander/using-the-command-line-tool-subcommander/"&gt;video&lt;/a&gt; showed me how to add a button that generated the classes. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Working like mad to complete deadlines doesn't give me much time to find time or justify watching a video at work. As a result of doing a presentation at work on SubSonic I created these handy steps to configure SubCommander within Visual Studio.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;SubCommander Visual Studio Configuration&lt;br /&gt;1) Click Tools -&gt; External Tools --&gt; Add&lt;/p&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_LRe5s6XBBes/SBtED8FfLvI/AAAAAAAAAyQ/jn646Eg6nZw/s1600-h/Untitled.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5195821429561437938" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_LRe5s6XBBes/SBtED8FfLvI/AAAAAAAAAyQ/jn646Eg6nZw/s320/Untitled.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;3) Name the tool SubSonic DAL (Or Anything you want, I like consistency myself and the online demo uses this name) &lt;/p&gt;&lt;br /&gt;&lt;p&gt;4) In the command field locate the sonic.exe, which is by default installed at: "C:\Program Files\SubSonic\SubSonic 2.0.3\SubCommander\sonic.exe" &lt;/p&gt;&lt;br /&gt;&lt;p&gt;5) In the arguments field put this: "generate /out [generated]". The value in the bracket is the directory that the generated files will be placed. It actually looks like this: "generate /out generated" &lt;/p&gt;&lt;br /&gt;&lt;p&gt;6) For "Initial directory" put "$(ProjectDir)" &lt;/p&gt;&lt;br /&gt;&lt;p&gt;7) Check "Use Output window" and "Prompt for arguments" It should look similar to the image below:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;8) Save. This button is now in the Tools menu. Note the placement of this menu item for step 4.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;9) Right click on the toolbar --&gt; Click Customize --&gt; Click "Toolbars" tab --&gt; Click New --&gt; Name the toolbar item "SubSonic" (It can be anything you like)4) Click "Commands" tab-&gt; Scroll to Tools in the left hand menu--&gt;Navigate to the external Command# that corresponds to the placement of the SubSonic menu item and drag to the toolbar.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;10) You're ready to go. Whenever the schema changes run the SubSonicDAL button and the files should be ready to go.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7257825023446459595-5826702288753913395?l=alt-net-guild.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alt-net-guild.blogspot.com/feeds/5826702288753913395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7257825023446459595&amp;postID=5826702288753913395' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7257825023446459595/posts/default/5826702288753913395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7257825023446459595/posts/default/5826702288753913395'/><link rel='alternate' type='text/html' href='http://alt-net-guild.blogspot.com/2008/05/subsonic-integration-with-visual-studio.html' title='Subsonic Integration with Visual Studio'/><author><name>Jesse Naiman</name><uri>http://www.blogger.com/profile/13495232701555856437</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LRe5s6XBBes/SBtED8FfLvI/AAAAAAAAAyQ/jn646Eg6nZw/s72-c/Untitled.png' height='72' width='72'/><thr:total>4</thr:total></entry></feed>
