It is a known fact that SharePoint can skin its system pages.
When designing a system masterpage for SharePoint, there are 2 ways that you can follow: take the generic application.master and customize it, or start from the existing masterpage of the site, supposing you are working on a skinned site.
I usually start from the main masterpage of the site and take into account the fact that the system masterpage needs a few tweaks.
The 3 main differences between the regular site pages and system pages in SharePoint are:
1. The Search control is missing on the system pages.
2. The Breadcrumb is different on the system pages.
3. The left navigation placeholder is empty.
Letting the Breadcrumb tweak for you to discover :), I will make you now aware of the fact that the Search control is not needed on the system pages master.
When you don’t want use certain controls (ContentPlaceHolders) on a SharePoint masterpage, you generally choose to hide them, not delete them, by placing them in a hidden panel. SharePoint will still find them and so not retrieve an error, but they will not show up in the page design, giving the site the look of your choice.
Following this pattern, I first hid the Search control on the system page in a panel. Everything worked fine until I tried to Check In/ Check Out a file and i got this error:
“Unable to validate data. at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) “
This error did not appear when the site was skinned with the SharePoint Default theme. So the problem laid in the customized application.master file. The only difference between the application.master and my system.master pages was that in my master I had the Search control place holder hidden (but present).
After deleting it, everything worked fine. Except… WIki Sites - History of a page retrieved an error: “Search PlaceHolder not found”.
So the answer to the question in the title is - Delete the Search control, leave the PlaceHolder:
< asp:ContentPlaceHolder id=”PlaceHolderSearchArea” runat=”server” >
< / asp:ContentPlaceHolder >