I will advise to use Synchronus events over assynchronus events.
If you have multiple user working on same file then assynchronus events will defeat the purpose in some scenarios. After Properties - (Usefull to get basic properties of item) properties. Current User Once we have the user , then check groups "user. Following function "Valid File" can be called from Item Adding or Item Updating event and pass the properties (SPItem Event Properties ) object. Libraray Title is "Images" then only execute the validation (common scenario for most of the requirement) 2.
Yous should use this object wiseley to achieve the goals you are looking for.
Following member of SPItem Event Properties is usefull when you are writing code in Event Handler * After Properties * After Url * Before Properties * Before Url * List Item * User Display Name * User Login Name * Web Url * Open Web() All these properties are usefull but we need to know which is the best place to use thes.
Imagine you have a list named "Software", it has title field and category lookup field (now we have 19 category types in "Category" list).
When we try to add new item in "Software" list in Item Adding event we can see: Where "18" is an Id of category.
And when we try to update item in IE: It's not expected behavior. When lookup rendered as , and in post back input also sends "0" when we leave lookup blank, but in this situation Share Point works not correctly and set "0" as lookup Id, but when we try get item by this Id, we of course get an exception.
Solution Most of the sharepoint developer first thought will be eventhandler.
Synchronus events are end with "ing" ex: Item Adding, Item Updating etc Assynchronus events are ends with "ed" Ex: Item Added, Item Updated etc. Before Properties -(No Use in this event) properties. Current User is Site Admin or not - if the user is Site Admin then give a validation exemption 3.
Let see how we will handle our current requirment, before start writing the code we need to find which objects and properties are avaialable in each events. Open Web() - (Usefull to get the SPWeb Object) * Item Updating SPContext - Null Http Context - Null SPItem Event Properties properties. After Properties - (Usefull to get after properties of item ) properties. Read the maximum size of the file from web.config and validate the file size against it.
This will allow us to pre-fill the data in our forms before the user does not grasp anything!
Given the asynchronous nature of the Item Added, if you change the data content, you are not 100% sure that the form displayed to the user include the new data and thus avoid conflicts backup.