Πολύ καλή επιλογή το MVC αν τα Project σας είναι μεγάλα και πολύπλοκα αλλά ακόμα και για μικρότερα δεν θα έλεγα όχι.
Τώρα για αυτό που ρώτησες, μπορεί να γίνει με διάφορους τρόπους και όπως πάντα ο κάθε ένας έχει τα συν και τα πλην.
Ο πρώτος είναι να περάσεις σαν hidden html tags τις αρχικές τιμές των Check Boxes έτσι ώστε στο Post method του controller να μπορείς να δεις την αρχική με την νέα τιμή αν έχει αλλαχθεί. Δεν τον προτείνω, απλά τον αναφέρω σαν μία επιλογή. Το γιατί είναι μία άλλη συζήτηση.
Ο δεύτερος είναι να χρησιμοποιήσεις το Session και να βάλεις εκεί τις αρχικές τιμές. Οπότε μετά κάνεις μία σύγκριση. Φαντάζομαι αρκετούς να μην συμφωνούν με αυτή την λύση, αλλά θα πρέπει να παραδεχθούμε ότι είναι δυνατόν να γίνει. Το αν πρέπει είναι και αυτό μία άλλη συζήτηση.
Και ο τρίτος είναι να φέρεις τις εγγραφές από την βάση να συγκρίνεις και να αποθηκεύσεις.
Μπορεί να υπάρχουν και άλλοι τρόποι, αλλά αυτούς έχω τώρα στο μυαλό μου.
Μία παρατήρηση στον κώδικα που είδα και που θα σε βοηθήσει στην συνέχεια. Μην γράφεις κώδικα που έχει να κάνει με ανάκτηση εγγραφών μέσα στο View. Αυτό θα πρέπει να γίνεται στον Controller ο οποίος είτε θα αναφέρεται σε κάποιο Repository ή ο πιο dirty τρόπος να αναφέρεται στο Entity Framework. Δεν γράφουμε όμως κώδικα μέσα στο View.
Αυτό που θα πρέπει να κάνεις είναι να φτιάχνεις ένα ViewModel το οποίο θα γεμίζει ο controller με δεδομένα και θα περνάς αυτό το ViewModel στο View. Οπότε ότι Linq γράψεις στο View να έχει να κάνει με τα Objects τους ViewModel και όχι με τα Application Domain Objects. Το MVC είναι πάρα πολύ καλό να δίνει την δυνατότητα στον προγραμματιστή να μπορεί να τηρεί το Separation of Concerns και με το να γράφεις κώδικα ανάκτησεις μέσα στο View είναι λάθος τακτική.
Ένα πάρα πολύ καλό site είναι το www.asp.net στο section MVC για να σε βοηθήσει να ξεκινήσεις. Είναι must για αυτόν που ξεκινάει με το MVC με παραδείγματα για το κάθε τι.