剃刀助手 - 奇怪的是InvalidOperationException

时间:2015-03-13 14:41:48

标签: c# asp.net asp.net-mvc razor

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

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

@Common.Helper1();
...
@Common.Helper2();
...
@Common.Helper3();

遵循http://www.asp.net/web-pages/overview/ui,-layouts,-and-themes/creating-and-using-a-helper-in-an-aspnet-web-pages-site

的建议

由于应用程序代码中的错误,我可以看到在页面上单击按钮后执行了两个几乎相同的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 中! 一次又一次地重复这种奇怪的行为。

可能是什么原因?

1 个答案:

答案 0 :(得分:1)

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

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

http://www.codeproject.com/Articles/787320/An-Absolute-Beginners-Tutorial-on-HTML-Helpers-and

http://www.dotnet-tricks.com/Tutorial/mvc/N50P050314-Understanding-HTML-Helpers-in-ASP.NET-MVC.html

http://www.c-sharpcorner.com/UploadFile/d98ae4/creating-custom-html-helpers-in-mvc5/