Я бы не пошел по этому пути (обновляя ViewState вручную), так как это не простая задача; по крайней мере, ViewState - это строка в кодировке BASE64, и вам придется написать довольно много кода javascript, чтобы всегда поддерживать синхронизацию. Я вижу, что это становится кошмаром для поддержания. На вашем месте, я бы использовал строго ajax, вместо того, чтобы разрешать подобные посты, или позволял MS обрабатывать ViewState для вас, и использовать UpdatePanels, но я тоже не люблю их.
Кроме того, если вашему приложению по какой-либо причине потребуется шифрование ViewState, вам не будет весело поддерживать ваше приложение.