<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.dotnetmafia.com/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>Corey Roth [MVP] : WebPart, SharePoint Online, Sandboxed Solution</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/WebPart/SharePoint+Online/Sandboxed+Solution/default.aspx</link><description>Tags: WebPart, SharePoint Online, Sandboxed Solution</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>A look at Visual Web Parts in Visual Studio 11</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2012/01/12/a-look-at-visual-web-parts-in-visual-studio-11.aspx</link><pubDate>Thu, 12 Jan 2012 16:23:15 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:5453</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=5453</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2012/01/12/a-look-at-visual-web-parts-in-visual-studio-11.aspx#comments</comments><description>&lt;p&gt;I recently published my first post about SharePoint development with Visual Studio 11 and I mentioned that there were some changes in how the Visual Web Part worked.&amp;#160; If you are familiar with the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/10/20/introducing-the-visual-web-part-in-sharepoint-2010.aspx"&gt;Visual Web Part in Visual Studio 2010&lt;/a&gt;, you know it really is just a glorified user control and it doesn’t work in the sandbox.&amp;#160; Luckily, the community stepped up and provided some alternatives that do work.&amp;#160; Visual Studio 11 now provides a Visual Web Part that works in the sandbox out of the box.&amp;#160; Since I am always curious about how things work, I decided to take a deeper look to see just how this web part is implemented now.&amp;#160; &lt;/p&gt;  &lt;p&gt;Let’s first take a look at the files that we get when we add a Visual Web Part to the project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/VS11DPVisualWebPartSolutionExplorer_341901DF.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="VS11DPVisualWebPartSolutionExplorer" border="0" alt="VS11DPVisualWebPartSolutionExplorer" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/VS11DPVisualWebPartSolutionExplorer_thumb_59A27F40.png" width="244" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are actually a few less files that we had in Visual Studio 2010.&amp;#160; We’ll see why here shortly.&amp;#160; What we get are the following&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Elements.xml – Used to deploy the .webpart file via module element&lt;/li&gt;    &lt;li&gt;A .ascx file – The actual user control with the design surface&lt;/li&gt;    &lt;li&gt;A .ascx.cs file – The code behind for the user control&lt;/li&gt;    &lt;li&gt;A .ascx.g.cs file – This file is generated by the designer.&amp;#160; We’ll talk about it more&lt;/li&gt;    &lt;li&gt;A .webpart file – The file that goes into the Web Part gallery that has the assembly path to the web part&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If we look at the .ascx.cs file, we’ll see our first difference.&amp;#160; &lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.ComponentModel;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI.WebControls.WebParts;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; SharePointProject1.HelloWorldWebPart&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color:#2b91af;"&gt;ToolboxItemAttribute&lt;/span&gt;(&lt;span style="color:blue;"&gt;false&lt;/span&gt;)]&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;partial&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;HelloWorldWebPart&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;WebPart&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; OnInit(&lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;base&lt;/span&gt;.OnInit(e);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeControl();&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;You’ll notice that this file inherits from &lt;em&gt;WebPart&lt;/em&gt; now instead of &lt;em&gt;UserControl&lt;/em&gt;.&amp;#160; At this point, you might be wonder how does all of this work.&amp;#160; Well, the magic is in the designer and what ends up in the .ascx.g.cs file.&amp;#160; Let’s take a look at it when it’s first created.&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &amp;lt;auto-generated&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160;&amp;#160;&amp;#160; This code was generated by a tool.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160;&amp;#160;&amp;#160; Runtime Version:2.0.50727.5448&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160;&amp;#160;&amp;#160; Changes to this file may cause incorrect behavior and will be lost if&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//&amp;#160;&amp;#160;&amp;#160;&amp;#160; the code is regenerated.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// &amp;lt;/auto-generated&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; SharePointProject1.HelloWorldWebPart {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text.RegularExpressions;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.SharePoint.WebPartPages;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.SharePoint.WebControls;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.Security;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.SharePoint.Utilities;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections.Specialized;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.SharePoint;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.Profile;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.Caching;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Configuration;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI.WebControls.WebParts;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.SessionState;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Web.UI.HtmlControls;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;partial&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;HelloWorldWebPart&lt;/span&gt; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;implicit&lt;/span&gt; &lt;span style="color:blue;"&gt;operator&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.&lt;span style="color:#2b91af;"&gt;TemplateControl&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;HelloWorldWebPart&lt;/span&gt; target) &lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; target == &lt;span style="color:blue;"&gt;null&lt;/span&gt; ? &lt;span style="color:blue;"&gt;null&lt;/span&gt; : target.TemplateControl;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableAttribute&lt;/span&gt;(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; @__BuildControlTree(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::SharePointProject1.HelloWorldWebPart.&lt;span style="color:#2b91af;"&gt;HelloWorldWebPart&lt;/span&gt; @__ctrl) {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; InitializeControl() {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.@__BuildControlTree(&lt;span style="color:blue;"&gt;this&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Load += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.&lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Page_Load);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableAttribute&lt;/span&gt;(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;virtual&lt;/span&gt; &lt;span style="color:blue;"&gt;object&lt;/span&gt; Eval(&lt;span style="color:blue;"&gt;string&lt;/span&gt; expression) {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.&lt;span style="color:#2b91af;"&gt;DataBinder&lt;/span&gt;.Eval(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Page.GetDataItem(), expression);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableAttribute&lt;/span&gt;(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;virtual&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; Eval(&lt;span style="color:blue;"&gt;string&lt;/span&gt; expression, &lt;span style="color:blue;"&gt;string&lt;/span&gt; format) {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.&lt;span style="color:#2b91af;"&gt;DataBinder&lt;/span&gt;.Eval(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Page.GetDataItem(), expression, format);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;It may not make a lot of sense at this point, but when you start adding controls, it makes more sense.&amp;#160; I added a label, textbox, and button control to the design surface.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/VS11DPVisualWebPartDesigner_51AADCDE.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="VS11DPVisualWebPartDesigner" border="0" alt="VS11DPVisualWebPartDesigner" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/VS11DPVisualWebPartDesigner_thumb_1108906F.png" width="407" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This looks like a typical user control that you are confortable working with.&amp;#160; Now let’s take a look at what the .ascx.g.cs file has now.&amp;#160; I’ll just include the parts that changed.&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;     &lt;p style="margin:0px;"&gt;[&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableAttribute&lt;/span&gt;(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;Label&lt;/span&gt; @__BuildControlLabel1() {&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;Label&lt;/span&gt; @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;Label&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Label1 = @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl.ApplyStyleSheetSkin(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Page);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl.ID = &lt;span style="color:#a31515;"&gt;&amp;quot;Label1&amp;quot;&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl.Text = &lt;span style="color:#a31515;"&gt;&amp;quot;Label&amp;quot;&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;}&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;[&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableAttribute&lt;/span&gt;(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;TextBox&lt;/span&gt; @__BuildControlTextBox1() {&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;TextBox&lt;/span&gt; @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;TextBox&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.TextBox1 = @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl.ApplyStyleSheetSkin(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Page);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl.ID = &lt;span style="color:#a31515;"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;}&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;[&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableAttribute&lt;/span&gt;(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;Button&lt;/span&gt; @__BuildControlButton1() {&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;Button&lt;/span&gt; @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;Button&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Button1 = @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl.ApplyStyleSheetSkin(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Page);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl.ID = &lt;span style="color:#a31515;"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl.Text = &lt;span style="color:#a31515;"&gt;&amp;quot;Button&amp;quot;&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; @__ctrl;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;}&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;[&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableAttribute&lt;/span&gt;(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.ComponentModel.&lt;span style="color:#2b91af;"&gt;EditorBrowsableState&lt;/span&gt;.Never)]&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; @__BuildControlTree(&lt;span style="color:blue;"&gt;global&lt;/span&gt;::SharePointProject1.HelloWorldWebPart.&lt;span style="color:#2b91af;"&gt;HelloWorldWebPart&lt;/span&gt; @__ctrl) {&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; System.Web.UI.&lt;span style="color:#2b91af;"&gt;IParserAccessor&lt;/span&gt; @__parser = ((System.Web.UI.&lt;span style="color:#2b91af;"&gt;IParserAccessor&lt;/span&gt;)(@__ctrl));&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__parser.AddParsedSubObject(&lt;span style="color:blue;"&gt;new&lt;/span&gt; System.Web.UI.&lt;span style="color:#2b91af;"&gt;LiteralControl&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;\r\n&amp;lt;div&amp;gt;\r\n&amp;#160;&amp;#160;&amp;#160; &amp;quot;&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;Label&lt;/span&gt; @__ctrl1;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl1 = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.@__BuildControlLabel1();&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__parser.AddParsedSubObject(@__ctrl1);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__parser.AddParsedSubObject(&lt;span style="color:blue;"&gt;new&lt;/span&gt; System.Web.UI.&lt;span style="color:#2b91af;"&gt;LiteralControl&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;\r\n&amp;#160;&amp;#160;&amp;#160; &amp;quot;&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;TextBox&lt;/span&gt; @__ctrl2;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl2 = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.@__BuildControlTextBox1();&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__parser.AddParsedSubObject(@__ctrl2);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Web.UI.WebControls.&lt;span style="color:#2b91af;"&gt;Button&lt;/span&gt; @__ctrl3;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__ctrl3 = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.@__BuildControlButton1();&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__parser.AddParsedSubObject(@__ctrl3);&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; @__parser.AddParsedSubObject(&lt;span style="color:blue;"&gt;new&lt;/span&gt; System.Web.UI.&lt;span style="color:#2b91af;"&gt;LiteralControl&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;\r\n&amp;lt;/div&amp;gt;\r\n&amp;quot;&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin:0px;"&gt;}&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;   &lt;p&gt;The designer creates methods for each ASP.NET control you drag onto the page and then the &lt;em&gt;@__BuiltControlTree&lt;/em&gt; method calls those methods to effectively add those controls to the page.&amp;#160; The HTML div elements that I added to the page simply get included as a &lt;em&gt;LiteralControl&lt;/em&gt;.&amp;#160; Needless to say you don’t want to mess with this file.&amp;#160; I have to give props to the Visual Studio and SharePoint teams.&amp;#160; I am sure this was a lot of work to implement.&amp;#160; :)&amp;#160; Give it a try if you want.&amp;#160; It seems to work well and the best part is what I have tried so far works with SharePoint Online.&lt;/p&gt;  &lt;p&gt;If you haven’t checked out Visual Studio 11 yet, head over to the &lt;a href="http://msdn.microsoft.com/en-us/vstudio/hh127353"&gt;developer site&lt;/a&gt; where you can get the download link and find out everything that’s new.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=5453" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/WebPart/default.aspx">WebPart</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Sandboxed+Solution/default.aspx">Sandboxed Solution</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint+Online/default.aspx">SharePoint Online</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category></item></channel></rss>