在我的ASP.NET MVC 5项目的 App_Code 文件夹中有一个 Common.cshmtl 文件,其中包含Razor助手。
页面视图(让它称为 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 中! 一次又一次地重复这种奇怪的行为。
可能是什么原因?
答案 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/