I am having the same problem. I have a large module that will have close to 10 or 12 different sections (panels). Depending upon what rights you have certain sections will be visible. The main ascx page is beginning to get unmanagable, so I thought I'd break each section down into a user control. Each section contains links to an Edit Page. The ModuleID always shows up as -1 in the user control.
I have managed to come up with a solution, but I don't know if it would be considered a best pratice.
It is
here