I need guidance/suggestions developing an app which will be hosted in SharePoint using external content types. So far I have a BDC model which works fine for reading the data und displaying it in an external list. Views can be build, filters can be set, columns can be sorted. Nice feature.
But editing or creating items with the built-in form does not satisfy my needs. At the time I have following requirements. It should be possible to have a control like the one which is rendered for the multi lookup field because in my app domain there are entities who have a n to m association between them.
Error messages of complex validations which are performed at the backend (web service, database, ...) should be user friendly displayed in the form. Built-in forms show an ugly BDC exception error message.
Some complex validation can and should be performed in the client. An example for this is that the values of two fields cannot be equal. This saves unnecessary round trips to the backend.
There is also a requirement for a master detail drop down list. Whenever the selected item in the master drop down list changes the items in the detail drop down list have to change.
These all are no problems with application pages. As far as I know application pages could not be used as form pages.
My understanding is that I have to build a custom web part, which will be used by the NewForm.aspx, EditForm.aspx, and DispForm.aspx forms. The web part can perform logic such as retrieving an entity and its related entities, rendering or adding controls, etc. But Microsoft says in a note at How SharePoint Forms Work:
Although it is possible to add Web Parts to the Display, Edit, and New forms for list items (DispForm.aspx, EditForm.aspx, and NewForm.aspx), doing so is not recommended or supported in SharePoint Foundation. Adding Web Parts to list view pages (AllItems.aspx) is supported.
So there is only one way left over? Creating custom form templates, field controls, and rendering templates to achieve my requirements.
Has anyone done this sort of work? Which way should I go?