<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Nico-pyright(c) &#187; ASP.Net</title>
	<atom:link href="https://blog.developpez.com/nico-pyright/pcategory/asp-net/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/nico-pyright</link>
	<description></description>
	<lastBuildDate>Mon, 08 Apr 2013 09:26:35 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Renouvellement MVP ASP.NET pour 2011</title>
		<link>https://blog.developpez.com/nico-pyright/p9627/asp-net/renouvellement_mvp_asp_net_pour_2011</link>
		<comments>https://blog.developpez.com/nico-pyright/p9627/asp-net/renouvellement_mvp_asp_net_pour_2011#comments</comments>
		<pubDate>Mon, 03 Jan 2011 20:12:37 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[ASP.Net]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Tout est dans le titre : je suis à nouveau MVP ASP.NET pour l&#8217;année 2011. J&#8217;en profite pour vous souhaiter à tous une très bonne année 2011, qu&#8217;elle soit riche en projet de toutes sortes.]]></description>
				<content:encoded><![CDATA[<p>Tout est dans le titre : je suis à nouveau MVP ASP.NET pour l&rsquo;année 2011.</p>
<p>J&rsquo;en profite pour vous souhaiter à tous une très bonne année 2011, qu&rsquo;elle soit riche en projet de toutes sortes.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Au revoir MVP Visual C++, Bonjour MVP ASP.NET</title>
		<link>https://blog.developpez.com/nico-pyright/p8489/c/au_revoir_mvp_visual_c_bonjour_mvp_asp_n</link>
		<comments>https://blog.developpez.com/nico-pyright/p8489/c/au_revoir_mvp_visual_c_bonjour_mvp_asp_n#comments</comments>
		<pubDate>Mon, 04 Jan 2010 11:27:29 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Après avoir été nominé MVP Visual C++ en 2007, je change désormais de domaine d&#8217;expertise. Je suis en effet nominé MVP ASP.NET pour cette année de 2010. J&#8217;en profite pour vous présenter mes meilleurs voeux pour 2010, qu&#8217;elle soit riche en .NET, en C# et en projets persos]]></description>
				<content:encoded><![CDATA[<p>Après avoir été nominé MVP Visual C++ en 2007, je change désormais de domaine d&rsquo;expertise.</p>
<p>Je suis en effet nominé <strong>MVP ASP.NET</strong> pour cette année de 2010.</p>
<p>J&rsquo;en profite pour vous présenter mes meilleurs voeux pour 2010, qu&rsquo;elle soit riche en .NET, en C# et en projets persos <img src="https://blog.developpez.com/nico-pyright/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[ASP.NET][AJAX]PageMethods is not defined, comment le corriger ?</title>
		<link>https://blog.developpez.com/nico-pyright/p8442/c/asp_net_ajax_pagemethods_is_not_defined</link>
		<comments>https://blog.developpez.com/nico-pyright/p8442/c/asp_net_ajax_pagemethods_is_not_defined#comments</comments>
		<pubDate>Tue, 08 Dec 2009 20:18:00 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si vous développez avec ASP.NET et que vous voulez faire de l&#8217;Ajax, vous vous êtres probablement intéressés aux PageMethods. Pour rappel, on peut utiliser les PageMethods de cette façon. Si vous avez utilisé les PageMethods, vous vous heurterez fatalement à l&#8217;erreur suivante : PageMethods is not defined Sisi, je vous assure Voici ce que vous pouvez faire et vérifier pour que ce message qui révèle toute notre impuissance face au framework ASP.NET puisse enfin disparaitre [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Si vous développez avec ASP.NET et que vous voulez faire de l&rsquo;Ajax, vous vous êtres probablement intéressés aux PageMethods.</p>
<p>Pour rappel, on peut utiliser <a href="http://nico-pyright.developpez.com/tutoriel/asp.net/ajax/compareaspnetajaxmethod/#Lpartialrenderingwithpagemethods" target="_blank">les PageMethods de cette façon</a>.</p>
<p>Si vous avez utilisé les PageMethods, vous vous heurterez fatalement à l&rsquo;erreur suivante :</p>
<p> <code class="codecolorer text default"><span class="text">PageMethods is not defined</span></code>
<p>Sisi, je vous assure <img src="https://blog.developpez.com/nico-pyright/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p>Voici ce que vous pouvez faire et vérifier pour que ce message qui révèle toute notre impuissance face au framework ASP.NET puisse enfin disparaitre :</p>
<p>  <span id="more-55"></span>
<ul>
<li>Vérifier que la méthode que vous souhaitez appeler est marquée comme [WebMethod]</li>
<li>Vérifier que la méthode est statique</li>
<li>Vérifier que le script manager est présent sur la page</li>
<li>Vérifier qu&rsquo;il a bien l&rsquo;attribut EnablePageMethods à True</li>
</ul>
<p>Pour vérifier que le proxy est bien généré, afficher le code source de la page et chercher le mot clé &laquo;&nbsp;PageMethods&nbsp;&raquo;, s&rsquo;il est absent, cela ne pourra pas marcher.</p>
<p>Vous pouvez ensuite :</p>
<ul>
<li>Vérifier que la méthode fasse bien partie du code-behind de la page (cela ne fonctionne pas toujours sur le code-behind d&rsquo;un usercontrol)</li>
<li>Nettoyer la solution (clean) et supprimer les fichiers dans C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files</li>
</ul>
<p>Après, il ne reste plus qu&rsquo;à allumer un cierge ou utiliser une des autres méthodes décrites <a href="http://nico-pyright.developpez.com/tutoriel/asp.net/ajax/compareaspnetajaxmethod/" target="_blank">dans ce tutoriel</a>.</p>
<p>Vous souhaitant la disparition de cette erreur.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[.NET]  [ASP.NET][VB.NET] Refonte de la FAQ ASP.NET VB.NET</title>
		<link>https://blog.developpez.com/nico-pyright/p8345/c/title_152</link>
		<comments>https://blog.developpez.com/nico-pyright/p8345/c/title_152#comments</comments>
		<pubDate>Mon, 16 Nov 2009 23:00:10 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[FAQ]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Découvrez la refonte de la FAQ ASP.NET, en VB.NET. Au menu : &#8211; Refonte du plan de la FAQ &#8211; Mise à jour de questions/réponses obsolètes &#8211; Ajout de 60 nouvelles questions/réponses Vous pouvez laissez vos avis/commentaires/suggestions sur ce billet ou sur le forum]]></description>
				<content:encoded><![CDATA[<p>Découvrez la <a href="http://dotnet.developpez.com/faq/asp/vbnet/">refonte de la FAQ ASP.NET, en VB.NET</a>.</p>
<p>Au menu :<br />
&#8211; Refonte du plan de la FAQ<br />
&#8211; Mise à jour de questions/réponses obsolètes<br />
&#8211; Ajout de 60 nouvelles questions/réponses</p>
<p>Vous pouvez laissez vos avis/commentaires/suggestions sur ce billet <a href="http://www.developpez.net/forums/d837100/dotnet/visual-basic-net/asp-net/faq-asp-net-commentaires-suggestions/">ou sur le forum</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[ASP.NET][C#] Refonte de la FAQ ASP.NET C#</title>
		<link>https://blog.developpez.com/nico-pyright/p8191/c/asp_net_c_refonte_de_la_faq_asp_net_c</link>
		<comments>https://blog.developpez.com/nico-pyright/p8191/c/asp_net_c_refonte_de_la_faq_asp_net_c#comments</comments>
		<pubDate>Tue, 13 Oct 2009 23:00:18 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[FAQ]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Découvrez la refonte de la FAQ ASP.NET, en C#. Au menu : &#8211; Refonte du plan de la FAQ &#8211; Mise à jour de questions/réponses obsolètes &#8211; Ajout de 28 nouvelles questions/réponses Vous pouvez laissez vos avis/commentaires/suggestions sur ce billet ou sur le forum]]></description>
				<content:encoded><![CDATA[<p>Découvrez la refonte de la <a href="http://dotnet.developpez.com/faq/asp/csharp/">FAQ ASP.NET, en C#</a>.</p>
<p>Au menu :<br />
&#8211; Refonte du plan de la FAQ<br />
&#8211; Mise à jour de questions/réponses obsolètes<br />
&#8211; Ajout de 28 nouvelles questions/réponses</p>
<p>Vous pouvez laissez vos avis/commentaires/suggestions sur ce billet ou <a href="http://www.developpez.net/forums/d821287/dotnet/csharp/asp-net/faq-asp-net-commentaires-suggestions/">sur le forum</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Complément sur l’entrée de FAQ : Peut-on avoir plusieurs formulaires avec runat=server dans une même page ?</title>
		<link>https://blog.developpez.com/nico-pyright/p8154/c/complement_sur_l_entree_de_faq_peut_on_a</link>
		<comments>https://blog.developpez.com/nico-pyright/p8154/c/complement_sur_l_entree_de_faq_peut_on_a#comments</comments>
		<pubDate>Mon, 05 Oct 2009 20:26:34 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[FAQ]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce cher Jérôme me faisait remarquer à juste titre que cette entrée de la FAQ : Peut-on avoir plusieurs formulaires avec runat=server dans une même page ? n&#8217;était pas très étoffée&#8230; Et il a tout à fait raison. Mais pourquoi ne peut-on pas avoir plusieurs formulaires avec runat=server sur une même page ? Il serait d&#8217;ailleurs plus judicieux de préciser qu&#8217;on ne peut pas avoir plusieurs formulaires visible sur la même page. En effet 1: [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ce cher <a href="http://www.developpez.net/forums/u26308/jerome-lambert/">Jérôme</a> me faisait remarquer à juste titre que cette entrée de la FAQ : <a href="http://dotnet.developpez.com/faq/asp/csharp/?page=WebControls_divers#formulairesrunatserver">Peut-on avoir plusieurs formulaires avec runat=server dans une même page ?</a> n&rsquo;était pas très étoffée&#8230; </p>
<p>Et il a tout à fait raison. </p>
<p>Mais pourquoi ne peut-on pas avoir plusieurs formulaires avec runat=server sur une même page ?<br />
  <br />Il serait d&rsquo;ailleurs plus judicieux de préciser qu&rsquo;on ne peut pas avoir plusieurs formulaires visible sur la même page. </p>
<p>En effet </p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> &lt;form id=<span style="color: #006080">&quot;form1&quot;</span> runat=<span style="color: #006080">&quot;server&quot;</span>&gt;</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> &lt;/form&gt;</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> &lt;form id=<span style="color: #006080">&quot;form2&quot;</span> runat=<span style="color: #006080">&quot;server&quot;</span> visible=<span style="color: #006080">&quot;false&quot;</span>&gt;</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> &lt;/form&gt;</pre>
</div>
</div>
<p>ne posera pas de problème d&rsquo;exécution, tandis que : </p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> &lt;form id=<span style="color: #006080">&quot;form1&quot;</span> runat=<span style="color: #006080">&quot;server&quot;</span>&gt;</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> &lt;/form&gt;</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> &lt;form id=<span style="color: #006080">&quot;form2&quot;</span> runat=<span style="color: #006080">&quot;server&quot;</span>&gt;</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> &lt;/form&gt; </pre>
</div>
</div>
<p>levera l&rsquo;HttpException suivante :&#160;&#160;&#160; </p>
<blockquote><p>A page can have only one server-side Form tag.</p></blockquote>
<p>Le modèle de programmation à formulaire unique (<a href="http://msdn.microsoft.com/en-us/library/dd163816.aspx">Single Form Model</a><a href="http://msdn.microsoft.com/en-us/library/dd163816.aspx)">)</a> est fait de manière à n&rsquo;avoir qu&rsquo;une seule balise form visible, avec l&rsquo;attribut runat = server. Cela permet à ASP.NET de gérer les contrôles qui sont posés dans le formulaire, ayant la balise runat=server, coté serveur. Cela permet entre autre de pouvoir y accéder dans le code behind directement.</p>
<p>Le modèle de développement impose que les éléments de formulaire soient postés à la même page qui les a soumis, ce qui permet aux mécanismes d&rsquo;ASP.NET (ViewState, etc &#8230;) de fonctionner correctement. </p>
<p>Pour la curiosité, la pile d&rsquo;appel au moment de l&rsquo;exception nous permet de constater que l&rsquo;exception est levée au moment de l&rsquo;appel à la méthode System.Web.UI.Page.OnFormRender() </p>
<p>Un petit coup de reflector nous permet de voir </p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">internal</span> <span style="color: #0000ff">void</span> OnFormRender()</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> {</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>  <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>._fOnFormRenderCalled)</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>  {</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>    <span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> HttpException(SR.GetString(<span style="color: #006080">&quot;Multiple_forms_not_allowed&quot;</span>));</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>  }</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>  <span style="color: #0000ff">this</span>._fOnFormRenderCalled = <span style="color: #0000ff">true</span>;</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>  <span style="color: #0000ff">this</span>._inOnFormRender = <span style="color: #0000ff">true</span>;</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span> } </pre>
</div>
</div>
<p>Cette méthode OnFormRender est appelée au moment du rendu du contrôle HtmlForm. Le code issu de Reflector nous permet bien de constater qu&rsquo;un boolean est mis à vrai lors du rendu d&rsquo;un contrôle HtmlForm. Si ce boolean est déjà à vrai, alors l&rsquo;exception est levée.</p>
<p>Cette entrée de faq sera modifiée à la prochaine (très bientôt) mise à jour.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[ASP.NET][C#] Mise à jour multiple de pages avec un UpdatePanel</title>
		<link>https://blog.developpez.com/nico-pyright/p7962/c/asp_net_c_mise_a_jour_multiple_de_pages_</link>
		<comments>https://blog.developpez.com/nico-pyright/p7962/c/asp_net_c_mise_a_jour_multiple_de_pages_#comments</comments>
		<pubDate>Tue, 18 Aug 2009 20:32:07 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[On l&#8217;a souvent vu, l&#8217;utilisation de l&#8217;updatepanel est très pratique et améliore très facilement l&#8217;expérience utilisateur d&#8217;un site web. Mal utilisé, celui-ci peut récupérer beaucoup plus d&#8217;informations que nécessaire. Que faire par exemple dans le cas simple suivant, lorsque l&#8217;on doit mettre à jour plusieurs zones en même temps d&#8217;une page volumineuse ? Quelque chose dans ce genre : &#160; &#160; Début à rafraichir &#160; Long milieu (images et textes statiques à foison) &#160; Fin [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>On l&rsquo;a souvent vu, l&rsquo;utilisation de l&rsquo;updatepanel est très pratique et améliore très facilement l&rsquo;expérience utilisateur d&rsquo;un site web.<br />
  <br />Mal utilisé, celui-ci peut récupérer beaucoup plus d&rsquo;informations que nécessaire. </p>
<p>Que faire par exemple dans le cas simple suivant, lorsque l&rsquo;on doit mettre à jour plusieurs zones en même temps d&rsquo;une page volumineuse ? </p>
<p>Quelque chose dans ce genre :</p>
<p>&#160;</p>
<div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid">
<div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"><font face=" Courier New"><font size="2">&#160; Début à rafraichir </p>
<p>&#160; Long milieu (images et textes statiques à foison) </p>
<p>&#160; Fin à rafraichir</font></font> </div>
</div>
<p><span id="more-95"></span></p>
<p>Par exemple : </p>
<div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid">
<div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"><font face=" Courier New"><font size="2"></font><font color="#0000ff">&lt;</font><font color="#000000">%</font><font color="#a31515">@</font><font color="#0000ff">&#160;</font><font color="#ff0000">Page</font><font color="#0000ff">=</font><font color="#000000">&quot;&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">Language</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">C#</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">AutoEventWireup</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">false</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">CodeBehind</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Default.aspx.cs</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">Inherits</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">testUpdatePanel._Default</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#000000">%</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;!</font><font color="#a31515">DOCTYPE</font><font color="#0000ff">&#160;</font><font color="#ff0000">html</font><font color="#0000ff"> PUBLIC </font><font color="#000000">&quot;</font><font color="#0000ff">-//W3C//DTD XHTML 1.0 Transitional//EN</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#000000">&quot;</font><font color="#0000ff">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</font><font color="#000000">&quot;</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">html</font><font color="#0000ff">&#160;</font><font color="#ff0000">xmlns</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">http://www.w3.org/1999/xhtml</font><font color="#000000">&quot;</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">head</font><font color="#0000ff">&#160;</font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Head1</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">title</font><font color="#0000ff">&gt;&lt;/</font><font color="#a31515">title</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;/</font><font color="#a31515">head</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">body</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">form</font><font color="#0000ff">&#160;</font><font color="#ff0000">id</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">form1</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Premier bloc à rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:Label</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">label1</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Long bloc à ne pas rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dignissim fermentum est at porta. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque dui lacus, ultricies ac vestibulum eu, interdum at nisl. Proin pharetra ipsum pharetra justo pharetra ornare. Integer sed enim sit amet erat suscipit sodales. Pellentesque mi dui, luctus vitae semper quis, scelerisque id orci. Praesent mattis nisi sed eros faucibus non adipiscing libero tincidunt. Aenean sollicitudin sapien ac nulla porta gravida. Phasellus ipsum arcu, aliquam semper ullamcorper quis, ultricies quis lacus. Sed porttitor, purus quis mollis interdum, dui orci feugiat nibh, non tincidunt risus lacus ut massa. Morbi eget sem id mi posuere congue. Aliquam erat volutpat. Vivamus elementum ligula augue. </font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Aenean pellentesque felis at nunc aliquet vitae porta est cursus. In hac habitasse platea dictumst. Donec arcu felis, suscipit vitae fermentum vitae, auctor ut justo. In egestas interdum erat, vel interdum nisi adipiscing sit amet. Aliquam vitae neque vel erat tempor mollis sed ac sapien. Nam sed velit ut lectus sagittis feugiat ac ut ante. Quisque non nunc lacus. Aliquam lobortis risus ac tortor cursus at tincidunt libero vulputate. Curabitur eu pellentesque diam. Vestibulum tristique tempus sollicitudin. Vestibulum pretium ipsum vitae diam bibendum placerat. Donec vel egestas augue. Suspendisse id placerat tortor. Maecenas pellentesque metus et nunc mollis id pretium tellus tincidunt. Nulla mollis cursus ligula, nec hendrerit tortor feugiat nec. In egestas, nulla ac gravida laoreet, tortor sem sollicitudin turpis, a mollis sem lectus in ipsum. Phasellus egestas fermentum lacus feugiat auctor. Aliquam augue risus, venenatis nec gravida quis, dignissim sagittis massa. Ut dapibus rhoncus sodales.</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:Label</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">label2</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Dernier bloc à rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:Label</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">label3</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:Button</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">Text</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Go</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">OnClick</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">OnButtonClick</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">button1</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;/</font><font color="#a31515">form</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;/</font><font color="#a31515">body</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;/</font><font color="#a31515">html</font><font color="#0000ff">&gt;</font></font> </div>
</div>
<p>L&rsquo;utilisateur non averti pourrait être tenté de mettre un UpdatePanel sur toute la page, ce qui fonctionnerait mais aurait pour effet de rafraîchir toute la page et par la même occasion la portion statique inutile.<br />
  <br />Un autre utilisateur au courant de cet effet pourrait être tenté d&rsquo;utiliser 2 UpdatePanel, mais comment les organiser ? </p>
<p>Si j&rsquo;entoure mes deux blocs avec des UpdatePanel, c&rsquo;est à dire : </p>
<p>&#160;</p>
<div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid">
<div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"><font face=" Courier New"><font size="2"></font><font color="#0000ff">&lt;</font><font color="#a31515">asp:ScriptManager</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">ScriptManager1</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Premier bloc à rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">asp:UpdatePanel</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">updatePanel1</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">UpdateMode</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Conditional</font><font color="#000000">&quot;</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">ContentTemplate</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:Label</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">label1</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160; &lt;/</font><font color="#a31515">ContentTemplate</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;/</font><font color="#a31515">asp:UpdatePanel</font><font color="#0000ff">&gt;<br />
        <br />&lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Long bloc ? ne pas rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br /></font><font color="#000000">&#160; [&#8230;]Code inutile enlevé [&#8230;]<br />
        <br /></font><font color="#0000ff">&lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Dernier bloc à rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">asp:UpdatePanel</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">updatePanel2</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">UpdateMode</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Conditional</font><font color="#000000">&quot;</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">ContentTemplate</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:Label</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">label3</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160; &lt;/</font><font color="#a31515">ContentTemplate</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;/</font><font color="#a31515">asp:UpdatePanel</font><font color="#0000ff">&gt;<br />
        <br />&lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&lt;</font><font color="#a31515">asp:Button</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">Text</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Go</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">OnClick</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">OnButtonClick</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">button1</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;</font></font> </div>
</div>
<p>Cela ne fonctionne pas, car l&rsquo;événement du bouton n&rsquo;est pas attrapé par l&rsquo;UpdatePanel, le bouton n&rsquo;étant pas dans le contrôle. </p>
<p>Si j&rsquo;agrandis la zone du deuxième UpdatePanel pour entourer le bouton, cela ne rafraîchit que le deuxième UpdatePanel, normal &#8230; </p>
<p><strong>La solution est bien d&rsquo;utiliser 2 UpdatePanel</strong>, effectivement. Il faut toujours veiller à ne pas englober des zones inutiles et à réduire au maximum les zones à mettre à jour.<br />
  <br />Il faudra par contre leurs indiquer de surveiller l&rsquo;événement click du bouton. Pour ce faire, on utilisera les Triggers et plus particulièrement l&rsquo;AsyncPostBackTrigger, comme ceci :</p>
<div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid">
<div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"><font face=" Courier New"><font size="2"></font><font color="#0000ff">&lt;</font><font color="#000000">%</font><font color="#a31515">@</font><font color="#0000ff">&#160;</font><font color="#ff0000">Page</font><font color="#0000ff">=</font><font color="#000000">&quot;&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">Language</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">C#</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">AutoEventWireup</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">false</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">CodeBehind</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Default.aspx.cs</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">Inherits</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">testUpdatePanel._Default</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#000000">%</font><font color="#0000ff">&gt;</p>
<p>&#160; &lt;</font><font color="#a31515">asp:ScriptManager</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Premier bloc à rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:UpdatePanel</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">updatePanel1</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">UpdateMode</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Conditional</font><font color="#000000">&quot;</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">ContentTemplate</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:Label</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">label1</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;/</font><font color="#a31515">ContentTemplate</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">Triggers</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:AsyncPostBackTrigger</font><font color="#0000ff">&#160;</font><font color="#ff0000">ControlID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">button1</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">EventName</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Click</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;/</font><font color="#a31515">Triggers</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;/</font><font color="#a31515">asp:UpdatePanel</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Long bloc à ne pas rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br /></font><font color="#000000">&#160;&#160;&#160; [&#8230;]Code inutile enlevé [&#8230;]<br />
        <br /></font><font color="#0000ff">&#160; &lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">p</font><font color="#0000ff">&gt;</font><font color="#000000">Dernier bloc à rafraichir</font><font color="#0000ff">&lt;/</font><font color="#a31515">p</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:UpdatePanel</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">updatePanel2</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">UpdateMode</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Conditional</font><font color="#000000">&quot;</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">ContentTemplate</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:Label</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">label3</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;/</font><font color="#a31515">ContentTemplate</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">Triggers</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</font><font color="#a31515">asp:AsyncPostBackTrigger</font><font color="#0000ff">&#160;</font><font color="#ff0000">ControlID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">button1</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">EventName</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Click</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;<br />
        <br />&#160;&#160;&#160;&#160;&#160; &lt;/</font><font color="#a31515">Triggers</font><font color="#0000ff">&gt;<br />
        <br />&#160;&#160;&#160; &lt;/</font><font color="#a31515">asp:UpdatePanel</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;/</font><font color="#a31515">div</font><font color="#0000ff">&gt;<br />
        <br />&#160; &lt;</font><font color="#a31515">asp:Button</font><font color="#0000ff">&#160;</font><font color="#ff0000">runat</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">server</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">Text</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">Go</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">OnClick</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">OnButtonClick</font><font color="#000000">&quot;</font><font color="#0000ff">&#160;</font><font color="#ff0000">ID</font><font color="#0000ff">=</font><font color="#000000">&quot;</font><font color="#0000ff">button1</font><font color="#000000">&quot;</font><font color="#0000ff"> /&gt;</font></font> </div>
</div>
<p>Et voilà, le minimum de code est rafraîchit et transite à travers le reseau. </p>
<p>Note : la mise à jour des labels se fait par exemple dans le OnLoad :</p>
<p>&#160;</p>
<div style="border-bottom: #000000 1px solid; border-left: #000000 1px solid; margin-left: 10pt; border-top: #000000 1px solid; margin-right: 2pt; border-right: #000000 1px solid">
<div style="background-color: #dcdcdc; white-space: nowrap; overflow: scroll"><font face=" Courier New"><font size="2"></font><font color="#0000ff">protected</font><font color="#000000">&#160;</font><font color="#0000ff">override</font><font color="#000000">&#160;</font><font color="#0000ff">void</font><font color="#000000"> OnLoad(</font><font color="#2b91af">EventArgs</font><font color="#000000"> e)<br />
        <br />{</p>
<p>&#160;&#160;&#160; label1.Text = </font><font color="#2b91af">DateTime</font><font color="#000000">.Now.ToLongTimeString();<br />
        <br />&#160;&#160;&#160; label2.Text = </font><font color="#2b91af">DateTime</font><font color="#000000">.Now.ToLongTimeString();<br />
        <br />&#160;&#160;&#160; label3.Text = </font><font color="#2b91af">DateTime</font><font color="#000000">.Now.ToLongTimeString();<br />
        <br />&#160;&#160;&#160; </font><font color="#0000ff">base</font><font color="#000000">.OnLoad(e);<br />
        <br />}</font></font> </div>
</div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Revue du livre Professional ASP.NET MVC 1.0</title>
		<link>https://blog.developpez.com/nico-pyright/p7917/asp-net/revue_du_livre_asp_net_mvc_1_0</link>
		<comments>https://blog.developpez.com/nico-pyright/p7917/asp-net/revue_du_livre_asp_net_mvc_1_0#comments</comments>
		<pubDate>Thu, 30 Jul 2009 21:43:59 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Livres]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[(english reviews follow) Cet ouvrage traite du nouveau framework de développement web de Microsoft, ASP.NET MVC. Ecrit dans une langue de Shakespare plutôt abordable, ce livre constitue une référence pour qui veut apprendre le framework MVC d&#8217;ASP.NET. Les auteurs, acteurs reconnus du monde du développement, ne font pas que nous enseigner les arcanes du framework, mais nous guident dans le développement ASP.NET MVC à travers leurs expériences et leurs bonnes pratiques. On appréciera notamment les [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-MVC-1-0.productCd-0470384611.html" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="384619-cover.indd" border="0" alt="384619-cover.indd" src="http://blog.developpez.com/media/140/WindowsLiveWriter/RevuedulivreASP.NETMVC1.0_13F67/0470384611_3.jpg" width="104" height="130" /></a> </p>
<p><em>(english reviews follow)</em></p>
<ul>
<li>Cet ouvrage traite du nouveau framework de développement web de Microsoft, <strong>ASP.NET MVC</strong>. </li>
</ul>
<p>Ecrit dans une langue de Shakespare plutôt abordable, ce livre constitue une référence pour qui veut apprendre le framework MVC d&rsquo;ASP.NET.    <br />Les auteurs, acteurs reconnus du monde du développement, ne font pas que nous enseigner les arcanes du framework, mais nous guident dans le développement ASP.NET MVC à travers leurs expériences et leurs bonnes pratiques.</p>
<p>On appréciera notamment les différentes prises de position sur TDD ainsi que les différents pattern à mettre en place pour réussir ses tests.</p>
<p>On découvrira en détails les différents éléments clés du modèle MVC. Les contrôleurs sont expliqués en détails ainsi que les vues (et les HtmlHelper). Le chapitre sur le routing nécessitera sans doute une deuxième relecture pour être parfaitement appréhendé.     <br />On lira également avec intérêt les chapitres sur les filtres (notion que j?ai rarement vu abordé dans des tutoriels, mais oh combien utile) et sur AJAX : on découvrira que le framework peut aller très loin dans l&rsquo;aide au développement d&rsquo;application web.</p>
<p>Ce livre propose aussi en premier chapitre l&rsquo;excellent tutoriel de Scott Guthrie, disponible également en téléchargement gratuit.</p>
<p>Enfin, les auteurs expliquent également les différences entre le développement &laquo;&nbsp;Webforms&nbsp;&raquo; d&rsquo;ASP.NET et MVC, ce qui permettra au lecteur de savoir quel framework est le plus adapté à ses besoins. Un chapitre est également dédié à l&rsquo;interaction entre les deux mondes. </p>
<p>En conclusion, cet ouvrage constitue vraiment un point d&rsquo;entrée incontournable à qui veut apprendre sérieusement à maitriser le framework MVC. Je l&rsquo;ai trouvé autant agréable à lire qu&rsquo;il m&rsquo;a apporté d&rsquo;informations sur le framework MVC. </p>
<p>Note : 5/5 <a href="http://blog.developpez.com/media/140/WindowsLiveWriter/RevuedulivreASP.NETMVC1.0_13F67/kitstars-5-0_2.gif"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="kitstars-5-0" border="0" alt="kitstars-5-0" src="http://blog.developpez.com/media/140/WindowsLiveWriter/RevuedulivreASP.NETMVC1.0_13F67/kitstars-5-0_thumb.gif" width="100" height="20" /></a> <a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-MVC-1-0.productCd-0470384611.html" target="_blank">Professional ASP.NET MVC 1.0</a></p>
<p> </p>
<ul>
<li>This book deals with the new Web development framework from Microsoft, ASP.NET MVC.      <br />Written in an easy english, this book is a reference for anyone wanting to learn the MVC framework for ASP. NET applications.       </li>
</ul>
<p>The authors, gurus of the development?s world, not only teach us the intricacies of the framework, but guide us in developing ASP.NET MVC through their experiences and best practices. </p>
<p>We would appreciate the different positions on TDD as well as the different pattern to put in place to have great tests.    <br />We discover in detail the various key elements of the MVC model. The controllers are explained in detail and the views too (and HtmlHelper). The chapter on routing may require a second reading to be fully understood.     <br />We would read with interest the chapters on filters (a concept that I have rarely seen addressed in tutorials, but very useful) and AJAX: we discover that the framework can go very far to help you with web development.</p>
<p>This book start with the excellent tutorial by Scott Guthrie, also available for free download.    </p>
<p>Finally, the authors also explain the differences between the ?Webforms? development and MVC with ASP.NET, which will allow the reader to know which framework is best suited to its needs. A chapter is also dedicated to the interaction between the two worlds. </p>
<p>To finish, this book is really a very good entry point to people who seriously wants to learn to master the MVC framework. I found it as pleasant to read as it gaves me good information on the MVC framework.</p>
<p>Rating : 5/5 <a href="http://blog.developpez.com/media/140/WindowsLiveWriter/RevuedulivreASP.NETMVC1.0_13F67/kitstars-5-0_2.gif"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="kitstars-5-0" border="0" alt="kitstars-5-0" src="http://blog.developpez.com/media/140/WindowsLiveWriter/RevuedulivreASP.NETMVC1.0_13F67/kitstars-5-0_thumb.gif" width="100" height="20" /></a> <a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-MVC-1-0.productCd-0470384611.html" target="_blank">Professional ASP.NET MVC 1.0</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriel : Comparaison de méthodes de communications AJAX avec ASP.NET</title>
		<link>https://blog.developpez.com/nico-pyright/p7570/c/tutoriel_comparaison_de_methodes_de_comm</link>
		<comments>https://blog.developpez.com/nico-pyright/p7570/c/tutoriel_comparaison_de_methodes_de_comm#comments</comments>
		<pubDate>Tue, 05 May 2009 23:00:00 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Cet article montre différentes méthodes pour effectuer des rendus partiels sur un site ASP.NET. Certaines méthodes utilisent abondamment les mécanismes mis en place par le framework ASP.NET (en utilisant par exemple un UpdatePanel, les PageMethods ou un service WCF). Elles permettent de s&#8217;affranchir de certaines lourdeurs automatiquement. D&#8217;autres sont plus artisanales et permettent de maitriser complètement les données qui transitent et la façon dont elles doivent être interprétées, comme on pourra le voir en utilisant [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Cet article montre différentes méthodes pour effectuer des rendus partiels sur un site ASP.NET. Certaines méthodes utilisent abondamment les mécanismes mis en place par le framework ASP.NET (en utilisant par exemple un UpdatePanel, les PageMethods ou un service WCF). Elles permettent de s&rsquo;affranchir de certaines lourdeurs automatiquement.<br />
D&rsquo;autres sont plus artisanales et permettent de maitriser complètement les données qui transitent et la façon dont elles doivent être interprétées, comme on pourra le voir en utilisant jQuery et ASP.NET.</p>
<p><a href="http://nico-pyright.developpez.com/tutoriel/asp.net/ajax/compareaspnetajaxmethod/">Découvrez l&rsquo;article</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[ASP.NET] Connaitre la taille de sa page</title>
		<link>https://blog.developpez.com/nico-pyright/p7440/c/asp_net_connaitre_la_taille_de_sa_page</link>
		<comments>https://blog.developpez.com/nico-pyright/p7440/c/asp_net_connaitre_la_taille_de_sa_page#comments</comments>
		<pubDate>Fri, 03 Apr 2009 19:02:00 +0000</pubDate>
		<dc:creator><![CDATA[nico-pyright(c)]]></dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je vous présente ici une méthode qui peut permettre de connaitre la taille finale de sa page, à des buts de profiling par exemple ou simplement de log. Pour ce faire, on peut intercepter l&#8217;événement de l&#8217;application PostReleaseRequestState qui se produit lorsque ASP.NET a terminé l&#8217;exécution de tous les gestionnaires d&#8217;événements de requête et lorsque les données d&#8217;état de requête ont été stockées. Pour s&#8217;abonner à cet événement, on peut passer par un HttpModule, mais [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je vous présente ici une méthode qui peut permettre de connaitre la taille finale de sa page, à des buts de profiling par exemple ou simplement de log.</p>
<p> <span id="more-92"></span>
<p>Pour ce faire, on peut intercepter l&rsquo;événement de l&rsquo;application <a href="http://msdn.microsoft.com/fr-fr/library/system.web.httpapplication.postreleaserequeststate.aspx" target="_blank">PostReleaseRequestState</a> qui se produit lorsque ASP.NET a terminé l&rsquo;exécution de tous les gestionnaires d&rsquo;événements de requête et lorsque les données d&rsquo;état de requête ont été stockées. </p>
<p>Pour s&rsquo;abonner à cet événement, on peut passer par un HttpModule, mais on peut aussi utiliser le <a href="http://dotnet.developpez.com/faq/asp/csharp/?page=globalasax#globalasax_presentation" target="_blank">Global.Asax</a> .</p>
<p>La solution proposée va être d&rsquo;utiliser l&rsquo;objet <a href="http://msdn.microsoft.com/fr-fr/library/system.web.httpresponse.filter.aspx" target="_blank">Response.Filter</a> qui va permettre d&rsquo;intercepter le code html généré avant la transmission au navigateur.</p>
<p>On l&rsquo;utilise en créant une classe dérivée de Stream, en général pour le modifier. Dans notre cas, on ne va rien modifier, juste &laquo;&nbsp;compter&nbsp;&raquo;.</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Courier New"><font size="2"></font><font color="#0000ff">public</font><font color="#000000"> </font><font color="#0000ff">class</font><font color="#000000"> </font><font color="#2b91af">Global</font><font color="#000000"> : </font><font color="#2b91af">HttpApplication         <br /></font><font color="#000000">{         <br />    </font><font color="#0000ff">protected</font><font color="#000000"> </font><font color="#0000ff">void</font><font color="#000000"> Application_PostReleaseRequestState(</font><font color="#0000ff">object</font><font color="#000000"> sender, </font><font color="#2b91af">EventArgs</font><font color="#000000"> e)         <br />    {          <br />        </font><font color="#0000ff">if</font><font color="#000000"> (</font><font color="#2b91af">HttpContext</font><font color="#000000">.Current.Handler </font><font color="#0000ff">is</font><font color="#000000"> </font><font color="#2b91af">Page</font><font color="#000000">)         <br />        {          <br />            Response.Filter = </font><font color="#0000ff">new</font><font color="#000000"> </font><font color="#2b91af">LengthFilterStream</font><font color="#000000">(Response.Filter);         <br />        }          <br />    }          <br />}</font></font> </div>
</p></div>
</p>
<p>Dans cet exemple, je filtre en testant le type du Handler, mais on peut aussi filtrer avec le contenu mime.</p>
<p>Par exemple</p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Courier New"><font size="2"></font><font color="#0000ff">if</font><font color="#000000"> (</font><font color="#2b91af">HttpContext</font><font color="#000000">.Current.Response.ContentType == </font><font color="#a31515">&laquo;&nbsp;text/plain&nbsp;&raquo;</font><font color="#000000">)</font></font> </div>
</p></div>
</p>
<p>lors d&rsquo;une requete Ajax.</p>
<p>Le code de la classe hériant de Stream pourrait être le suivant : </p>
<div style="border-right: #000000 1px solid; border-top: #000000 1px solid; margin-left: 10pt; border-left: #000000 1px solid; margin-right: 2pt; border-bottom: #000000 1px solid">
<div style="overflow: scroll; white-space: nowrap; background-color: #dcdcdc"><font face=" Courier New"><font size="2"></font><font color="#0000ff">internal</font><font color="#000000"> </font><font color="#0000ff">class</font><font color="#000000"> </font><font color="#2b91af">LengthFilterStream</font><font color="#000000"> : </font><font color="#2b91af">MemoryStream         <br /></font><font color="#000000">{         <br />    </font><font color="#0000ff">private</font><font color="#000000"> </font><font color="#0000ff">int</font><font color="#000000"> taille;         <br />    </font><font color="#0000ff">private</font><font color="#000000"> </font><font color="#0000ff">readonly</font><font color="#000000"> </font><font color="#2b91af">Stream</font><font color="#000000"> outputStream;         </p>
<p>    </font><font color="#0000ff">public</font><font color="#000000"> LengthFilterStream(</font><font color="#2b91af">Stream</font><font color="#000000"> output)         <br />    {          <br />        outputStream = output;          <br />    }          </p>
<p>    </font><font color="#0000ff">public</font><font color="#000000"> </font><font color="#0000ff">override</font><font color="#000000"> </font><font color="#0000ff">void</font><font color="#000000"> Write(</font><font color="#0000ff">byte</font><font color="#000000">[] buffer, </font><font color="#0000ff">int</font><font color="#000000"> offset, </font><font color="#0000ff">int</font><font color="#000000"> count)         <br />    {          <br />        taille += count;          <br />        outputStream.Write(buffer, offset, count);          <br />    }          </p>
<p>    </font><font color="#0000ff">protected</font><font color="#000000"> </font><font color="#0000ff">override</font><font color="#000000"> </font><font color="#0000ff">void</font><font color="#000000"> Dispose(</font><font color="#0000ff">bool</font><font color="#000000"> disposing)         <br />    {          <br />        </font><font color="#2b91af">Logger</font><font color="#000000">.Log(</font><font color="#0000ff">string</font><font color="#000000">.Format(</font><font color="#a31515">&laquo;&nbsp;Taille de la page {0} : {1}&nbsp;&raquo;</font><font color="#000000">, </font><font color="#2b91af">HttpContext</font><font color="#000000">.Current.Request.Url, taille));         <br />        </font><font color="#0000ff">base</font><font color="#000000">.Dispose(disposing);         <br />        </font><font color="#0000ff">if</font><font color="#000000"> (disposing)         <br />            outputStream.Dispose();          <br />    }          <br />}</font></font> </div>
</p></div>
</p>
<p>On hérite plutôt de MemoryStream, comme ca, on a déjà toute la logique implémentée.</p>
<p>Comme la page est envoyée en plusieurs bouts, chaque appel à Write n&rsquo;est pas forcément unique, c&rsquo;est pour ca qu&rsquo;on logue lorsque l&rsquo;objet est disposé.</p>
<p><a href="ftp://ftp-developpez.com/nico-pyright/blog/demoFilter.zip">Télécharger le projet démo</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
