2009-01-09 8 views
1

J'ai commencé à recevoir cette erreur lors de la publication du formulaire avec Model Binder. Pour tester le problème j'ai réduit le postback à une propriété de chaîne du modèle mais j'obtiens toujours l'erreur de débordement. Quelqu'un peut-il suggérer ce qui causerait cela?System.StackOverflowException non gérée (MVC Model BINDING)

MISE À JOUR Le problème semble être lié à la propriété dans le modèle qui est une clé étrangère. Si cette clé est supprimée, la liaison fonctionne. Comment puis-je faire la liaison et inclure la relation de clé étrangère?

Répondre

1

Vous pouvez résoudre ce problème de plusieurs manières. Une façon est d'essayer quelque chose comme ça.

public ActionResult AddProduct([Bind(Exclude = "Category")]Product product) { } 

Cela indique au modèle de liaison pour essayer de ne pas lier la catégorie (propriété FK). C'est un problème connu et l'équipe MVC l'a déjà corrigé pour RC.

Vous pouvez également transmettre une liste d'exclusion dans UpdateModel/TryUpdateModel et n'importe où vous ajoutez un attribut Bind.

+0

merci pour info. En fait, "Exclure" ne fonctionne pas non plus. – zsharp

+0

Oui, c'est le cas. J'ai rencontré le même problème et Exclude l'a corrigé pour moi. Vous devez juste vous assurer que vous excluez toutes les propriétés FK. –

+0

Exclure encore n'a pas fonctionné, donc j'ai juste inclus tous les autres et cela a fonctionné. Merci. – zsharp

0

Un dépassement de pile est généralement dû à une récursion infinie. Regardez à travers la trace de la pile et voyez si vous voyez la même fonction (ou groupe de fonctions) encore et encore. Cela indiquerait qu'une fonction récursive n'atteint jamais son scénario de base.