Asp.net mvc System.StackOverflowException未处理(MVC模型绑定)

Asp.net mvc System.StackOverflowException未处理(MVC模型绑定),asp.net-mvc,model-binding,Asp.net Mvc,Model Binding,我在使用Model Binder发回表单时开始出现此错误。为了测试这个问题,我将回发减少为模型的一个字符串属性,但仍然会出现溢出错误。有人能提出是什么原因造成的吗 更新 问题似乎与模型中作为外键的属性有关。如果删除此密钥,则绑定将正常工作。如何进行绑定并包含外键关系?堆栈溢出通常是由于无限递归造成的。通过堆栈跟踪查看是否反复看到相同的函数(或函数组)。这表明递归函数永远不会到达其基本情况。堆栈溢出通常是由于无限递归造成的。通过堆栈跟踪查看是否反复看到相同的函数(或函数组)。这表明递归函数永远不会

我在使用Model Binder发回表单时开始出现此错误。为了测试这个问题,我将回发减少为模型的一个字符串属性,但仍然会出现溢出错误。有人能提出是什么原因造成的吗

更新
问题似乎与模型中作为外键的属性有关。如果删除此密钥,则绑定将正常工作。如何进行绑定并包含外键关系?

堆栈溢出通常是由于无限递归造成的。通过堆栈跟踪查看是否反复看到相同的函数(或函数组)。这表明递归函数永远不会到达其基本情况。

堆栈溢出通常是由于无限递归造成的。通过堆栈跟踪查看是否反复看到相同的函数(或函数组)。这表明递归函数永远不会到达它的基本情况。

您可以用几种方法解决这个问题。一种方法是尝试这样的东西

public ActionResult AddProduct([Bind(Exclude = "Category")]Product product) { }
这会告诉模型绑定器不要尝试绑定类别(FK属性)。这是一个已知的问题,MVC团队已经为RC解决了它


您还可以将排除列表传递到UpdateModel/TryUpdateModel和添加绑定属性的任何位置。

您可以通过几种方法解决此问题。一种方法是尝试这样的东西

public ActionResult AddProduct([Bind(Exclude = "Category")]Product product) { }
这会告诉模型绑定器不要尝试绑定类别(FK属性)。这是一个已知的问题,MVC团队已经为RC解决了它


您还可以将排除列表传入UpdateModel/TryUpdateModel和添加绑定属性的任何位置。

是的。我遇到了同样的问题,并为我解决了它。你只需要确保排除所有FK属性。排除仍然不起作用,所以我只包括了所有其他属性,它确实起作用了。谢谢,是的。我遇到了同样的问题,并为我解决了它。你只需要确保排除所有FK属性。排除仍然不起作用,所以我只包括了所有其他属性,它确实起作用了。谢谢