C# 剃刀助手-奇怪的无效操作异常

C# 剃刀助手-奇怪的无效操作异常,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,在我的ASP.NET MVC 5项目的App_Code文件夹中有一个Common.cshmtl文件,其中包含剃须刀助手 页面视图(称为Production.cshtml)使用Common.cshmtl中的大量帮助程序,如下所示: @Common.Helper1(); ... @Common.Helper2(); ... @Common.Helper3(); 它正在遵循来自欧盟的建议 由于应用程序代码中的错误,我可以看到在一个页面上单击一个按钮后执行了两个几乎相等的AJAX请求 我犯了个错误 A

在我的ASP.NET MVC 5项目的App_Code文件夹中有一个Common.cshmtl文件,其中包含剃须刀助手

页面视图(称为Production.cshtml)使用Common.cshmtl中的大量帮助程序,如下所示:

@Common.Helper1();
...
@Common.Helper2();
...
@Common.Helper3();
它正在遵循来自欧盟的建议

由于应用程序代码中的错误,我可以看到在一个页面上单击一个按钮后执行了两个几乎相等的AJAX请求

我犯了个错误

An exception of type 'System.InvalidOperationException' occurred in mscorlib.dll but was not handled in user code.
错误还表明代码试图修改foreach运算符内的集合。在这里,它看起来像是应用程序代码的正常错误

但是,当调试代码以查找某个错误时,我可以看到它在Product.cshtml的某个非常随机的位置中断,根本没有连接到foreach。在上层和底层文件中都找不到foreach。另外,当再次尝试调试时(当然没有修改),我可以看到这次中断发生在另一个文件中-在Common.cshtml中! 一次又一次的重复证明了这种奇怪的行为


原因可能是什么?

问题是因为您使用了错误的MVC 5指南。ASP.NET网页项目使用不同的结构,您不需要将HTML帮助程序放在
App\u code
文件夹中,它们应该放在
.cs
文件中,而不是
.cshtml
文件中

有关构建MVC HTML帮助程序的帮助,请参阅以下教程


例外情况的详细信息在哪里?@它们将是俄语:-)我将进行简短翻译。你的意思是,指定的建议不正确?它们对ASP.NET MVC 5不正确。你发布的链接是针对ASP.NET网页的,这是一个不同的平台,碰巧也使用了Razor语法。这就是重点。无论如何,我觉得重构这段代码没问题。但问题主要在于这种行为的原因是什么,这就是问题的答案。您正在为错误的平台构建HTML帮助程序。您需要遵循MVC HTML助手指南,而不是ASP.NET网页指南。这是假设问题的第一部分说明您正在使用ASP.NET MVC 5是正确的。