【发布时间】:2011-08-25 06:11:18
【问题描述】:
我似乎以某种方式引入了无限循环。
我正在使用 MVC2 并尝试使用 jQuery post 或 ajax - 但似乎两者都发生了。
这个想法是用户在文本字段中输入 id,然后我在 db 中搜索 id,然后在网格中显示对象。
代码如下:
<script type="text/javascript">
function bulk() {
var data = $("#textfield").val();
$.post("Search", { searchString: data });
}
</script>
哪些帖子到控制器方法:
[HttpPost]
public ActionResult Search(string searchString)
{
...
return View(viewModel);
}
问题是,(无论是使用ajax 还是post)在文本框中输入ID 并点击搜索按钮后,我得到了stackoverflow。这似乎可能是由无限循环引起的,但我无法弄清楚它为什么会发生。在这一行之后会发生什么:
$.post("Search", { searchString: data });
我点击了操作方法:public ActionResult Search(string searchString)然后一切正常,搜索数据库,添加到视图模型,然后在return View(viewModel);之后我只是一遍又一遍地直接回到public ActionResult Search(string searchString)。
我完全不知道为什么会发生这种情况。任何想法可能会发生什么?
编辑:bulk通过按钮点击调用<input type="submit" onclick="bulk()" value="Search" />
@Daniel,我知道StackOverflowException 未处理
在 mscorlib.dll 中出现 'System.StackOverflowException' 类型的未处理异常
如果我单击查看详细信息 - 无法评估表达式,因为当前线程处于堆栈溢出状态。
发生在实体框架代码中
public Entities() : base("name=Entities", "Entities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
【问题讨论】:
-
似乎在无限循环中调用了 bulk() 函数。 bulk() 函数在哪里/如何调用?
-
如果您使用 Fiddler,您是否会在单击后看到大量请求(即使如此,也不应该导致堆栈溢出!)?如果您对 Search 方法进行单元测试(或以其他方式调用),是否仍然会出现堆栈溢出?
标签: c# jquery asp.net-mvc json http-post