Thursday, December 4, 2014

Browsable / DesignerSerializationVisibility / EditorBrowsable

There are a lot of Attributes that come to help us all along when we develop custom controls for ASP.NET.

Here are a few important ones that would perform some basic operations for us during development.

These are more useful at design time then actual render time.


//This attribute when true shows up the property in the Properties Grid for a control[Browsable(true)] 
//This attribute sets whether the property would be available to VisualStudio Code Editor Intellisense.[EditorBrowsable(EditorBrowsableState.Never)] 
//This attribute sets whether the property would be serialized in the Designer HTML View or not.[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]


Explore the options available with these enums and their effects to know more on those attriutes.

IMP - There could be times when changing these attributes would not have any effect. 

Keep Calm :) .

This could be because of Visual Studio caching the intellisense schema and displaying the cached schema for you.

Simply clear the cache by deleting all the files in 
"C:\Documents and Settings\[YOUR_USER_NAME]\Application Data\Microsoft\VisualStudio\10.0\ ReflectedSchemas"

or whereever your schema files are located.


Further, another important aspect is that even when you do all this, the added custom property would be available to you at design time as well as code behind. However this property would not be rendered with the page and as a result, it would not be available at the client side for any operation.

Usually this is not required but in case you need that property to be available to you client side as an attribute, all you need to do is overwrite the AddAttributesToRender method.


// Overriding the AddAttributesToRender Method because we need to add the custom       
// properties and there values to its control html so we can use access them on        
// Client Side using JavaScript        
protected override void AddAttributesToRender(HtmlTextWriter writer)        
{            
             writer.AddAttribute("PropertyName", this.PropertyName);
            // Calling Base Class AddAttributesToRender Method                 
            base.AddAttributesToRender(writer);       
} 

Saturday, October 4, 2014

ImageButton PostbackUrl not working (DoPostBackWithOptions)

This is a common problem.

I copied over a working code from my old project into this new project and it stopped working.

No postbacks occuring. When I did view source, the source for the old page (working) and the new page (not working) were exactly the same for these controls.

The image button uses DoPostBackWithOptions

So I started looking for help related to DoPostBackWithOptions.

Finally figured out. The issue being multiple instances of "FORM" being created.

If you have more than one forms on the page, ASP.NET does not know which one to post to and stays on the safer side by not posting to any ( :) )

Remove all but one form tags from your page and it will start working.