2010-07-19 97 views
20

我是一個真正的初學者,所以我的問題可能會顯得荒謬..但是,我不知道文件.aspx.designer.cs如何工作.. 這是我第一次使用包含文件的解決方案.aspx .designer.cs爲每頁。所以,我理解它的聲明在.aspx用於代碼隱藏控件..aspx.designer.cs它是如何工作的?

這裏是我的問題:

爲什麼有時解決方案doen't有.aspx.designer.cs文件? (是文件隱藏或不存在?)

我經常有這個文件的問題,他們不自動重新創建控件的聲明,當我在.aspx代碼中添加一些,我做錯了什麼?

回答

25

.aspx.designer.xx文件是ASP.NET webforms代碼隱藏文件和.aspx標記文件的橋樑。此處顯示aspx標記頁上存在的任何服務器控件。最重要的是服務器控件的名稱和類型。

這部分允許Visual Studio在設計時創建的服務器控件的代碼隱藏頁中爲用戶提供IntelliSense。

工作原理:當您向設計人員添加/刪除服務器控件時,Visual Studio將在.designer文件中生成或保持protected成員的同步。

protected global::System.Web.UI.WebControls.DropDownList DropDownList1; 

請注意,.designer文件會創建一個partial class。這提供了與代碼隱藏文件的鏈接。這就是Intellisense如何獲得.aspx和代碼隱藏之間的鉤子。

您可以重新生成你的設計師文件:http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/

+0

感謝您的回覆,但是有可能手動要求重建頁面的設計器文件? – bAN 2010-07-20 11:00:35

+1

@ban:你打賭,這裏是如何重新生成你的設計器文件:http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/ – 2010-07-20 13:12:36

18

的Visual Studio提供了創建網站的兩種方法:網站項目和Web應用程序項目。 (好的,好的,如果你添加MVC,三個)。

只有Web應用程序項目具有designer.cs文件。 網站項目沒有他們。

Web應用程序項目類型在Visual Studio 2003中

+2

這回答我的問題,謝謝! – Nestor 2011-05-09 16:19:16

0

由於p.campbell指出出,該文件了.Designer.cs .aspx文件鏈接到它的代碼隱藏.aspx.cs文件加入。如果沒有.designer.cs文件,.aspx.cs CodeBehind文件中的每個.aspx頁面控件都將返回錯誤「在當前上下文中不存在」。 .designer.cs中的鏈接基於aspx文件中的@ Page指令的「Inherits」屬性以及.aspx.cs CodeBehind文件的名稱空間和類來完成。 「Inherits」屬性的最後一部分必須與CodeBehind文件和.designer.cs文件中定義的類匹配,且其之前的段必須與.designer.cs和CodeBehind文件的名稱空間匹配。

實施例: myfile.aspx

<%@ Page Language="C#" 
    AutoEventWireup="true" 
    CodeBehind="myfile.aspx.cs" 
    Inherits="my.namespace.dot.classname" %> 

myfile.aspx.cs

namespace my.namespace.dot { 
    public partial class classname : Page { ... } 
} 

注:代碼隱藏文件類必須從Page類繼承,或一些它們的衍生物。

myfile.designer.aspx.cs

namespace my.namespace.dot { 
    public partial class classname { ... } 
} 

注:類了.Designer.cs不關心繼承,只是類名的代碼隱藏和.aspx文件相匹配。

可以再生一個像這樣的丟失.designer文件(w3cgeek.com「Regenerate designer.cs‘):

  1. 創建同一目錄一個新的空白文件命名爲您的.aspx和.aspx.cs文件’ myfile.aspx.designer.cs「其中」myfile「是要鏈接的.aspx和.aspx.cs文件的名稱。
  2. 將一個空類名稱空間添加到新文件中,並確保它們的名稱與您要鏈接的.aspx和.aspx.cs文件中指定的名稱空間和類匹配。
  3. 保存.designer.cs文件,對.aspx文件進行任何更改(例如,添加空格),然後保存.aspx文件。

Visual Studio應該自動填充.designer.cs文件,其中包含所有必需的代碼以鏈接您的.aspx和CodeBehind文件。 「現在不存在」的錯誤現在應該消失了!

編輯:我添加了.designer.cs說明,因爲鏈接是死的,最初由p.campbell發佈。