2015-03-13 85 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