ASP.NET Server Control Property Attribute must be required

I have a custom ASP.NET server control CustomControl with a property attribute Path.

If the Path is not explicitly specified, then I want an exception to be thrown.

For example,

<myControls:CustomControl Path="somedirectory/someotherdirectory/somefile.ext" runat="server" />

should compile, and

<myControls:CustomControl runat="server" /> should throw an exception.

I realize I can do this in the getter of the Path property, but is there some attribute that necessitates this?

Update

Is there any mechanism for validating the values of the property attributes other than using in the getter methods of the code-behind properties?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You can check this in init event of the custom control, and throw an exception.

Update

There is; Check it in init event. As init of control’s called after host’s (page or user control) init event. So you can throw an exception if its null or empty

Method 2

I don’t think this should be a compile time check.

After all, the property value might be supplied in the code behind during page_load or a similiar event.

Method 3

There is not an attribute that necessitates this. The best place to do this is in the getter of the Path property.

Method 4

No, there’s no way to force the page framework to do this. You need to do it in your code at runtime and raise an exception if the value wasn’t provided. Otherwise we’d never run into the “crap, I forgot the runat=server part” error 🙂


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x