Cela n'aurait pas de sens que cela fonctionne actuellement, car le ViewPage<T> vérifie toujours en interne que le modèle est une instance de T. Vous ne pourriez jamais passer null à cause de cette vérification.
Quant à savoir pourquoi les types de structure n'étaient pas autorisés en premier lieu, il y a une multitude de raisons. Parmi elles : (a) cela pourrait encourager les gens à utiliser des types de structure personnalisés pour un modèle, ce qui n'est presque jamais la bonne chose à faire ; (b) vous ne pouvez pas passer un type de structure comme paramètre à Controller.UpdateModel() ; (c) les modèles devraient avoir une égalité de référence afin que les filtres puissent les inspecter et les modifier ; (d) les types de structure intégrés comme int, etc. ne sont normalement pas utiles par eux-mêmes comme objet de modèle ; et (e) les types de structure ne supportent pas l'héritage, par exemple passer un modèle int dans un ViewPage<long> exploserait.
Il s'avère que (c) n'est probablement pas un problème parce que les types de structure doivent être immuables, mais les autres points exigent que l'autorisation des types de structure fasse l'objet d'une réflexion approfondie et d'une décision de conception avant de les soutenir. Les conséquences de leur prise en charge sont bien plus importantes que la simple suppression de la contrainte sur ViewPage<T>.