In linea di massima io lavoro in modo differente.
E' difficile che io costruisca molti form per ogni record o un form gigantesco per tutti i record, visualizzati nella pagina, che intendo modificare o cancellare
Di solito uso creare una lista di tutti i record ed a fianco di ciascuno di questi metto un semplice link con associata una querystring che contiene alcune variabili id, tabella, altre informazioni) necessarie all'elaborazione della richiesta (modifica o eliminazione del record).
In modo del tutto teorico mi sembra di aver capito che nel tuo codice costruisci un form per ogni record (nel tuo caso si poteva anche creare un unico form con una checkbox o radio per ogni record con associati nelle rispettive value l'id del record corrente e forse sarebbe stato anche più facile)
Sempre teoricamente mi sembra di comprendere che premendo sul pulsante submit invii uno specifico form con tutti gli elementi in esso contenuti e non gli altri. Ma nel codice potrebbe crearsi confusione. Teoricamente la input di tipo hidden dovrebbe restituire il valore ad esso associato, ma evidentemente non è sempre così.
Per questo motivo, se un valore posso assegnarlo ad uno specifico controllo lo faccio evitando i controlli nascosti che uso per altri scopi.
Non so se sono stato chiaro o, peggio, se ho detto qualche corbelleria.
Mi affido alla comprensione di chi legge.