Я не знаю всех ответов на ваши вопросы, но у меня была эта проблема раньше, и теперь я проверяю, что на модели, которую я пытаюсь обновить, есть как геттеры, так и сеттеры. Это обычно исправляет мои проблемы.
Я также теперь использую TryUpdateModel, чтобы я мог перехватывать исключения и реализовывал классы проверки, чтобы гарантировать выполнение минимальных требований модели.
Я также использую UpdateModel<MyModel>(Model)
Я также буду использовать на вставке что-то вроде public ActionResult Create(MyModel myModel){}
Как я уже сказал, нет конкретного ответа на ваш вопрос, но это то, что я делаю, чтобы он работал.
Надеюсь, это поможет.