這是一個奇怪的問題。我改變了一些東西(不知道是什麼),現在我的應用程序的視圖不會在運行時編譯。ASP.NET MVC強類型視圖編譯錯誤
視圖本身是強類型:
<%@ Page Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MyNamespace.OperatorModel>" %>
當我訪問該網頁時,編譯失敗,他說:
CS1061:「對象」不包含「登錄的定義'並且沒有擴展方法'Log'接受'object'類型的第一個參數可以找到(你是否缺少使用指令或程序集引用?)
Prett y標準錯誤。相應的源代碼行是:
<%= Html.HiddenFor(model => model.Log) %>
當我看着編譯器生成的代碼,我看到基類的觀點是不是強類型:
[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
public class views_operator_create_aspx
: global::System.Web.Mvc.ViewPage, // NOT STRONGLY TYPED
System.Web.SessionState.IRequiresSessionState,
System.Web.IHttpHandler {
所以我的問題是,什麼導致視圖編譯器忽略視圖定義上的Inherits
屬性?
我應該指出,在同一個控制器上的其他視圖正在工作,他們有完全相同的頁面聲明,我已經在上面顯示。
編輯有沒有人知道生成的源代碼文件在哪裏生活,假設它被保存在某個地方?
編輯我發現了罪魁禍首(在我的答案中),但我不知道爲什麼會發生這種情況。如果有人能解釋我會很感激!
如果您刪除視圖並添加一個具有相同代碼的新視圖,該怎麼辦? – aolde 2010-08-23 17:58:20
@Manticore - 很好的想法。當我在它的位置創建一個新的空視圖時,它工作正常。當我將舊頁面的內容複製回來時,它會再次失敗。我會一次性複製一些內容,看看是什麼導致它崩潰。看起來我最終可能會在這裏回答我自己的問題:) – 2010-08-23 18:06:09
好主意!如果您發現有趣的事,請告訴我們。 – aolde 2010-08-23 18:15:02