<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'render_component'</title><link>http://forums.asp.net/search/SearchResults.aspx?q=&amp;tag=render_component&amp;orTags=0&amp;o=DateDescending</link><description>Search results matching tag 'render_component'</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Re: ComponentController and ActionResult</title><link>http://forums.asp.net/thread/2419854.aspx</link><pubDate>Thu, 12 Jun 2008 04:00:00 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2419854</guid><dc:creator>blaketaylor</dc:creator><description>&lt;p&gt;I hope you guys decide to keep and enhance this feature.&lt;br /&gt;&lt;br /&gt;Perhaps the concept of &amp;quot;component controllers&amp;quot; can be replaced with normal controllers the render an alternative view based on a &amp;quot;request context&amp;quot;. This would open the doors for the Html.RenderComponet method to take a bool, that turns it into an ajax request from the rendered output on the clientside.&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: How about a very complex page which need many &amp;quot;MVC modules/parts&amp;quot;  ?</title><link>http://forums.asp.net/thread/2071758.aspx</link><pubDate>Thu, 20 Dec 2007 05:00:00 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2071758</guid><dc:creator>shinakuma</dc:creator><description>&lt;p&gt;[quote user=&amp;quot;abombss&amp;quot;]By the way Render_Component was &lt;a href="http://rubyonrails.org/deprecation"&gt;deprecated &lt;/a&gt;in RoR in favor of partials which are simply UserControls in MS MVC.[/quote]&lt;/p&gt;
&lt;p&gt;Explains why Monorail didn&amp;#39;t have this concept either. That&amp;#39;s very unfortunate. I understand that the problem overusing it will cause. And I also agree with the sentiment that probably 95% of the time, partials are a better way for view partitioning. But I still think that there is definitely a place for components. I like this controller-action seperation over before filters.&lt;/p&gt;
&lt;p&gt;[quote user=&amp;quot;convit&amp;quot;]Could you please help me to implement a helper function with prototype like this:[/quote]&lt;/p&gt;
&lt;p&gt;At first, I wasn&amp;#39;t planning on doing this. I briefly played around with the routing features of the drop. Other than that, I haven&amp;#39;t had the chance to really dig into this ctp. But curiosity got the best of me and I decided to give it a shot. Gave me a chance to understand the internals of ms-mvc a little better. Bewarned, it&amp;#39;s just a proof of concept. There might be a better way of doing it. &lt;/p&gt;
&lt;p&gt;In your ViewPage or ViewMasterPage, just do something like&amp;nbsp;&amp;lt;%= this.RenderComponent( new { Controller=&amp;quot;Top10&amp;quot;, Action=&amp;quot;Index&amp;quot;, ForumId = 1 } ) %&amp;gt;, that will jump out, invoke Top10Controller.Index(1) and spit out the fragments. Inside the action, you should have access to everything in the context.&lt;/p&gt;&lt;font color="#0000ff" size="1"&gt;public&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;static&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;class&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;RenderComponentExtension&lt;br /&gt;&lt;/font&gt;&lt;font size="1"&gt;{&lt;br /&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;public&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;static&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;string&lt;/font&gt;&lt;font size="1"&gt; RenderComponent(&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;this&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;ViewPage&lt;/font&gt;&lt;font size="1"&gt; viewPage, &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;object&lt;/font&gt;&lt;font size="1"&gt; values)&lt;br /&gt;{&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;string&lt;/font&gt;&lt;font size="1"&gt; path = viewPage.Url.Action(values);&lt;br /&gt;&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;IHttpContext&lt;/font&gt;&lt;font size="1"&gt; context = viewPage.ViewContext.HttpContext;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;return&lt;/font&gt;&lt;font size="1"&gt; RenderComponent(path, context);&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;public&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;static&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;string&lt;/font&gt;&lt;font size="1"&gt; RenderComponent(&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;this&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;ViewMasterPage&lt;/font&gt;&lt;font size="1"&gt; masterPage, &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;object&lt;/font&gt;&lt;font size="1"&gt; values)&lt;br /&gt;{&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;string&lt;/font&gt;&lt;font size="1"&gt; path = masterPage.Url.Action(values);&lt;br /&gt;&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;IHttpContext&lt;/font&gt;&lt;font size="1"&gt; context = masterPage.ViewContext.HttpContext;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;return&lt;/font&gt;&lt;font size="1"&gt; RenderComponent(path, context);&lt;br /&gt;}&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;private&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;static&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;string&lt;/font&gt;&lt;font size="1"&gt; RenderComponent(&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;string&lt;/font&gt;&lt;font size="1"&gt; path, &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;IHttpContext&lt;/font&gt;&lt;font size="1"&gt; context)&lt;br /&gt;&lt;/font&gt;&lt;font size="1"&gt;{&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;string&lt;/font&gt;&lt;font size="1"&gt; oldPath = context.Request.Path;&lt;br /&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;br /&gt;context.RewritePath(path);&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;RouteData&lt;/font&gt;&lt;font size="1"&gt; routeData = &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;RouteTable&lt;/font&gt;&lt;font size="1"&gt;.Routes.GetRouteData(context);&lt;br /&gt;&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;Type&lt;/font&gt;&lt;font size="1"&gt; handlerType = routeData.Route.RouteHandler;&lt;br /&gt;&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;IRouteHandler&lt;/font&gt;&lt;font size="1"&gt; routehandler = (&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;IRouteHandler&lt;/font&gt;&lt;font size="1"&gt;)&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;Activator&lt;/font&gt;&lt;font size="1"&gt;.CreateInstance(handlerType);&lt;br /&gt;&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;RequestContext&lt;/font&gt;&lt;font size="1"&gt; requestContext = &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;new&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;RequestContext&lt;/font&gt;&lt;font size="1"&gt;(context, routeData);&lt;br /&gt;&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;IHttpHandler&lt;/font&gt;&lt;font size="1"&gt; httpHandler = (&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;MvcHandler&lt;/font&gt;&lt;font size="1"&gt;)routehandler.GetHttpHandler(requestContext);&lt;br /&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;br /&gt;&lt;font color="#2b91af"&gt;TextWriter&lt;/font&gt;&lt;font size="1"&gt; oldWriter = context.Response.Output;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;StringWriter&lt;/font&gt;&lt;font size="1"&gt; newWriter = &lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;new&lt;/font&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;StringWriter&lt;/font&gt;&lt;font size="1"&gt;();&lt;br /&gt;context.Response.SwitchWriter(newWriter);&lt;br /&gt;httpHandler.ProcessRequest(&lt;/font&gt;&lt;font color="#2b91af" size="1"&gt;HttpContext&lt;/font&gt;&lt;font size="1"&gt;.Current);&lt;br /&gt;&lt;br /&gt;context.RewritePath(oldPath);&lt;br /&gt;context.Response.SwitchWriter(oldWriter);&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;return&lt;/font&gt;&lt;font size="1"&gt; newWriter.ToString();&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt; 
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;</description></item></channel></rss>