簡體   English   中英

將CodeFile轉換為CodeBehind

[英]Converting CodeFile to CodeBehind

所以我似乎在將CodeFile引用到CodeBehind時遇到了一些困難。 在你問之前,我沒有Visual Studio,我不在Windows上。 代碼托管在我有權訪問的IIS服務器上。

<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeFile="anon.cs" %>

此代碼完美無缺,但在將其更改為:

<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeBehind="anon.cs" %>

該頁面返回錯誤:

Parser Error Message: Could not load type 'corn.cheese.pies.CasLogin'.

你確定你理解CodeFile和CodeBehind之間的區別嗎? 例如,參見CodeFile vs CodeBehind (忽略接受答案,但兩個鏈接都是dea)或本文關於差異。

簡而言之:

假定CodeBehind文件被編譯到部署在您網站的bin文件夾中的程序集中。 當ASP.NET引擎加載您的aspx文件時,它使用Inherits指令來嘗試查找該類。 CodeBehind文件主要用於輔助編譯(和工具,例如“查看源代碼”),但工作在編譯時完成。

ASP.NET會在運行時根據需要定位和編譯CodeFile文件。 您可以“預編譯”您的網站以回退到較舊的模型,如果您不想將源代碼部署到每個網站,這將非常有用。 但默認情況下,您的CodeFile文件是部署到站點的.cs文件,該類是在ASP.NET臨時存儲文件夾中生成的。 (從技術角度來看: CodeFile頁面是partial class定義,只有partial class的自定義代碼隱藏部分實際部署在C#文件中;這就是CodeFile最初不存在的原因,因為C#編譯器最初不能做部分類。)

通過從CodeFile更改為CodeBehind您告訴ASP.NET忽略C#文件的存在,並且只在已編譯的程序集中查找它。 反過來,ASP.NET告訴您編譯的程序集實際上並不包含您告訴它要查找的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM