2015-03-13 64 views
1

没有包含在我的ASP.NET MVC 5项目的App_Code文件夹剃刀佣工Common.cshmtl文件。剃刀助手 - 奇怪的出现InvalidOperationException

页面视图(让它被称为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

由于建议到应用程序代码中的错误,我可以看到2个几乎相同的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

哪里是异常的详细信息? – Will 2015-03-13 14:46:42

+0

@他们是俄罗斯人:-)我会很快翻译 – 2015-03-13 14:49:39

回答

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/

+0

,所以你的意思是指定的建议是不正确的? – 2015-03-13 15:24:06

+0

它们对于ASP.NET MVC 5是不正确的。您发布的链接是针对ASP.NET WebPages的,这是一个不同的平台,它也恰好使用Razor语法。 – NightOwl888 2015-03-13 15:25:41

+0

这就是要点。无论如何,我觉得可以重构这段代码。但问题主要在于什么可能是这种行为的原因 – 2015-03-13 15:32:24