Just thought I’d share a bug I ran into with everyone and hope it helps you avoid it.
But, it’s easy to miss that picklist has two fields: a Name, and a Value. Value is something boring like 2, name is something to show to the user, like “Critical”.
You would think that writing code like this was great:
Picklist prop = source.Properties[attribute] as Picklist;
if (prop == null || prop.IsNull)
So, when writing server side code that handles data submitted by the client, it looks like you’ll need to only trust the value and ignore the name. It’s possible you could audit your client code and make sure that everywhere a new value is set a new name is set too.. but one day somebody will find some code from another project, add it to yours, and your picklist handling will be wrong.