<?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-4261167647090291020</id><updated>2012-02-16T11:04:08.512-08:00</updated><category term='C#'/><category term='ASP.Net'/><category term='DotNetNuke'/><category term='MVC2'/><category term='Links'/><title type='text'>Wallonman's Code</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://code.ericpiraux.be/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default'/><link rel='alternate' type='text/html' href='http://code.ericpiraux.be/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Wallonman</name><uri>http://www.blogger.com/profile/00922423365096774347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_98zWVmXaTc0/S1bE-Loa8nI/AAAAAAAAERM/05_xAUCgoVU/S220/ep.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4261167647090291020.post-8653312133395899711</id><published>2010-07-29T13:14:00.000-07:00</published><updated>2010-07-29T13:15:33.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>Dotnetnuke roundtrip redirection</title><content type='html'>&lt;span style="font-size: large;"&gt;&lt;b&gt;Symptom&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;After a deployment of Dotnetnuke, or after a change in the overall configuration (changing connection string for instance), the navigator seems redirecting infinitely until it stops with an error indicating that there are too much redirections.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Evidences&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Looking with Fiddler what's happen, you get that kind of content:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt; &lt;span class="attr"&gt;lang&lt;/span&gt;&lt;span class="kwrd"&gt;="en-US"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="Title"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; Error &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; title&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="StyleSheet"&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="/dnn/Install/Install.css"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt; &lt;span class="attr"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; link&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; head&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt; = &lt;span class="kwrd"&gt;"Form"&lt;/span&gt; &lt;span class="attr"&gt;method&lt;/span&gt; = &lt;span class="kwrd"&gt;"post"&lt;/span&gt; &lt;span class="attr"&gt;action&lt;/span&gt; = &lt;span class="kwrd"&gt;"ErrorPage.aspx? status = 500 &amp;amp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt; = Thread error was + + + being aborted."&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt; = &lt;span class="kwrd"&gt;"Form"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="hidden"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="__VIEWSTATE"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="__VIEWSTATE"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="blablabla"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;cellspacing="5" cellpadding="5" &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt; &lt;span class="attr"&gt;border&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="Error"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; id="Image1" src="logo.gif" alt="DotNetNuke" &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;border&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; td&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; Tr&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt; &lt;span class="attr"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;="height:100%;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;Valign&lt;/span&gt;&lt;span class="kwrd"&gt;="top"&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="width:650px;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; DotNetNuke Error: - Version 04.08.03 &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; h2&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;hr&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; Thread was being aborted. &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; p&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; td&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; Tr&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;align&lt;/span&gt;&lt;span class="kwrd"&gt;="right"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="hypReturn"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="WizardButton"&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="Default.aspx"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;border&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; src="/dnn/images/lt.gif"&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;Return to Site &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; a&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; td&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; Tr&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="10px"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; td&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; tr&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; table&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; form&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; body&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt; html&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Explanations&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;There is an &lt;b style="color: red;"&gt;Error &lt;/b&gt;somewhere in the Dotnetnuke startup process, therefore Dotnetnuke redirects to its error page, BUT the error page can't complete because of the &lt;b style="color: red;"&gt;Error&lt;/b&gt;. And so on...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Reasons&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;There is an error in the initialization process of Dotnetnuke. Here are some suspects:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b style="color: #38761d;"&gt;web.config&lt;/b&gt; with an invalid value in the connection string for instance -&amp;gt; no database -&amp;gt; error&lt;/li&gt;&lt;li&gt;&lt;b style="color: #38761d;"&gt;PortalAlias &lt;/b&gt;table has an invalid value (i.e. localhost)&lt;/li&gt;&lt;li&gt;&lt;b style="color: #38761d;"&gt;.Net Trust Level&lt;/b&gt; is not set to Full Trust, or it seems that sometime setting successively Medium then Full forces the refresh of the virtual folder config (?!? I read that somewhere, I tried, and it worked)&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;The redirection is probably not due to any redirection rule (check anyway), but is due to the fact that there is an error in the configuration and the Dotnetnuke Error page is unable to complete.&lt;br /&gt;Redirection to an error page that raises an error is nightmare, check with special attention all your configurations, and you'll find the origin of the error&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4261167647090291020-8653312133395899711?l=code.ericpiraux.be' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code.ericpiraux.be/feeds/8653312133395899711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4261167647090291020&amp;postID=8653312133395899711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default/8653312133395899711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default/8653312133395899711'/><link rel='alternate' type='text/html' href='http://code.ericpiraux.be/2010/07/dotnetnuke-roundtrip-redirection.html' title='Dotnetnuke roundtrip redirection'/><author><name>Wallonman</name><uri>http://www.blogger.com/profile/00922423365096774347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_98zWVmXaTc0/S1bE-Loa8nI/AAAAAAAAERM/05_xAUCgoVU/S220/ep.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4261167647090291020.post-3386050282880200940</id><published>2010-06-16T06:34:00.000-07:00</published><updated>2010-06-16T06:34:27.714-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC2'/><title type='text'>MVC2 table stripping</title><content type='html'>Simple scripting tip to set an alternate class to each row of a table when rendering the HTML in an MVC2 view.&lt;br /&gt;&lt;br /&gt;Here, my view is a typed view and extends system.Web.Mvc.ViewPage&lt;persons[]&gt; &lt;/persons[]&gt;&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;thead&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            Header 1&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            Header 2&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;thead&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tbody&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;          var rowClass = &lt;span class="str"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;          &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var item &lt;span class="kwrd"&gt;in&lt;/span&gt; Model)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;          {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            rowClass = &lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(rowClass) &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                        ? &lt;span class="str"&gt;"pair"&lt;/span&gt; : &lt;span class="str"&gt;""&lt;/span&gt;; &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%= Html.Encode(rowClass) %&amp;gt;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;= Html.Encode(item.Name) &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;= Html.Encode(item.Firstname) &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt; } &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tbody&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;14: There is a private rowClass variable defined as an empty string outside of the foreach loop&lt;br /&gt;17-18: The rowClass variable is alternatively set to "pair" or "" according to its previous value&lt;br /&gt;19: The value of rowClass is rendered as the 's class attribute values&lt;br /&gt;&lt;br /&gt;Of course there must be a "pair" class defined in the css.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4261167647090291020-3386050282880200940?l=code.ericpiraux.be' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code.ericpiraux.be/feeds/3386050282880200940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4261167647090291020&amp;postID=3386050282880200940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default/3386050282880200940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default/3386050282880200940'/><link rel='alternate' type='text/html' href='http://code.ericpiraux.be/2010/06/mvc2-table-stripping.html' title='MVC2 table stripping'/><author><name>Wallonman</name><uri>http://www.blogger.com/profile/00922423365096774347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_98zWVmXaTc0/S1bE-Loa8nI/AAAAAAAAERM/05_xAUCgoVU/S220/ep.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4261167647090291020.post-2723311881671990363</id><published>2007-09-06T00:53:00.000-07:00</published><updated>2007-09-06T01:18:40.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Using Visual Studio 2005 to Design Abstract Forms</title><content type='html'>Looking on how to workaround the problem of abstract forms that are not editable through the Visual Studio Designer, I found that interresting article:&lt;br /&gt;&lt;br /&gt;&lt;div class="list"&gt;&lt;span id="_ctl0__ctl0_titleList"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href="http://www.urbanpotato.net/default.aspx/document/2001"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a id="_ctl0__ctl0_titleList__ctl2_titleLink" class="item"&gt;Using Visual Studio Whidbey to Design Abstract Forms&lt;/a&gt;&lt;/span&gt; (thank you Brian)&lt;br /&gt;&lt;br /&gt;Here are the summarized steps to perform in order to quick-kix the issue:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.urbanpotato.net/content%5Cdownloads%5CAbstractBaseClass.zip"&gt;Download &lt;/a&gt;Brian's project&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Add &lt;/span&gt;the &lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;GeneralConcreteClassProvider.cs&lt;/span&gt; class to your project&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Add &lt;/span&gt;that class in the &lt;span style="font-style: italic;"&gt;same namespace than you abstract form&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;modifying &lt;/span&gt;the namespace&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Add &lt;/span&gt;the following code to the &lt;span style="font-style: italic;"&gt;head of your abstract class&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;TypeDescriptionProvider&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;typeof&lt;/span&gt;&lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;GeneralConcreteClassProvider&lt;span style="color: rgb(0, 0, 0);"&gt;))]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;ConcreteClass&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;typeof&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;GeneralConcreteForm&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;))]&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Add &lt;/span&gt;the definition and implementation of the &lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;GeneralConcreteForm &lt;/span&gt;into your abstract form, and &lt;span style="font-weight: bold;"&gt;implement &lt;/span&gt;the abtract ptroperties, methods...&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;#region&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; Concrete version of AbstractForm for Designer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;&lt;br /&gt;// Here is a concrete version of AbstractForm that acts as a stand in&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;internal class&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;GeneralConcreteForm &lt;span style="color: rgb(0, 0, 0);"&gt;: &lt;/span&gt;UIForm&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;pre class="MsoNormal"  style="font-family:courier new;"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public override string&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;AbstractProperty &lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(51, 51, 255);"&gt;return null&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set { &lt;/span&gt;; }&lt;/pre&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;#endregion&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;All you'll have to &lt;span style="font-weight: bold;"&gt;maintain&lt;/span&gt;, is the &lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;GeneralConcreteForm &lt;/span&gt;with the future abstract properties and methods.&lt;/li&gt;&lt;li&gt;That's it&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4261167647090291020-2723311881671990363?l=code.ericpiraux.be' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code.ericpiraux.be/feeds/2723311881671990363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4261167647090291020&amp;postID=2723311881671990363' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default/2723311881671990363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default/2723311881671990363'/><link rel='alternate' type='text/html' href='http://code.ericpiraux.be/2007/09/using-visual-studio-2005-to-design.html' title='Using Visual Studio 2005 to Design Abstract Forms'/><author><name>Wallonman</name><uri>http://www.blogger.com/profile/00922423365096774347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_98zWVmXaTc0/S1bE-Loa8nI/AAAAAAAAERM/05_xAUCgoVU/S220/ep.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4261167647090291020.post-8326703421313108919</id><published>2007-07-02T23:46:00.000-07:00</published><updated>2007-10-01T00:57:29.149-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Bookmarks</title><content type='html'>Frequently used bookmarks&lt;br /&gt;&lt;a href="http://mail.google.com/"&gt;http://mail.google.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.google.com/calendar/"&gt;http://www.google.com/calendar/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Less frequently used bookmarks&lt;br /&gt;&lt;a href="http://www.siteprocentral.com/cgi-bin/feed/feed.cgi"&gt; Color Scheme Chooser&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I found an interresting site, remember to have a look there&lt;br /&gt;&lt;a href="http://webtest.canoo.com/"&gt;http://webtest.canoo.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.softcomplex.com/"&gt;SoftComplex&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Related to DotNetNuke&lt;br /&gt;&lt;a href="http://www.snowcovered.com/snowcovered2/Default.aspx?tabid=242&amp;amp;PackageID=8355" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; http://www.snowcovered.com&lt;wbr&gt;/snowcovered2/Default.aspx&lt;wbr&gt;?tabid=242&amp;amp;PackageID=8355&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4261167647090291020-8326703421313108919?l=code.ericpiraux.be' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code.ericpiraux.be/feeds/8326703421313108919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4261167647090291020&amp;postID=8326703421313108919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default/8326703421313108919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4261167647090291020/posts/default/8326703421313108919'/><link rel='alternate' type='text/html' href='http://code.ericpiraux.be/2007/07/bookmarks.html' title='Bookmarks'/><author><name>Wallonman</name><uri>http://www.blogger.com/profile/00922423365096774347</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_98zWVmXaTc0/S1bE-Loa8nI/AAAAAAAAERM/05_xAUCgoVU/S220/ep.png'/></author><thr:total>0</thr:total></entry></feed>
