2010-07-19 18 views
20

Jestem naprawdę początkującym, więc moje pytanie może wyglądać śmiesznie .. Ale, zastanawiam się, jak działa plik .aspx.designer.cs .. Po raz pierwszy pracuję z rozwiązaniem zawierającym pliki .aspx .designer.cs dla każdej strony. Więc rozumiem, że to oświadczenie kontroli stosowanych w .aspx do kodu źródłowego ..aspx.designer.cs jak to działa?

Oto moje pytania:

Dlaczego czasami rozwiązania doen't mieć pliki .aspx.designer.cs? (czy pliki są ukryte, czy nie istnieje?)

Często mam problemy z tymi plikami, nie odtwarzają automatycznie deklaracji kontroli po dodaniu niektórych w kodzie .aspx, co robię źle?

Odpowiedz

25

Pliki .aspx.designer.xx są mostem dla plików kodu sieci ASP.NET i plików znaczników .aspx. Tutaj znajduje się dowolna kontrola serwera istniejąca na stronie znaczników aspx. Najważniejsze są nazwa i typ kontrolki serwera.

Po części pozwala to programowi Visual Studio na przekazanie użytkownikowi IntelliSense na stronie kodowej dla elementów sterujących serwera utworzonych podczas projektowania.

Sposób działania: Visual Studio wygeneruje lub będzie synchronizować element protected w pliku .designer po dodaniu/usunięciu elementu sterującego serwera z projektanta.

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

Należy zauważyć, że plikidesigner tworzą partial class. Zapewnia to powiązanie z plikiem z kodem źródłowym. W ten sposób Intellisense dostaje hak pomiędzy .aspx i kod-z tyłu.

można zregenerować plik autora: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/

+0

Dzięki za odpowiedź, ale czy można ręcznie poprosić o odbudowanie pliku projektanta dla strony? – bAN

+1

@ban: Założę się, oto jak zregenerować swój plik projektanta: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/ –

18

Visual Studio posiada dwa podejścia do tworzenia stron internetowych: Projekty stron internetowych i projektów aplikacji sieci Web. (OK, OK, trzy, jeśli dodasz MVC).

Tylko projekty aplikacji sieci Web mają pliki designer.cs. Projekty witryn sieci Web nie mają ich.

typu Web Application Projekt został dodany w Visual Studio 2003.

+2

Który odpowiedział moje pytanie, dzięki! – Nestor

0

Jak p.campbell wskazał-out, plik .designer.cs łączy plik .aspx do swojego pliku .aspx.cs kodzie. Bez pliku .designer.cs każda kontrolka strony .aspx w pliku .aspx.cs CodeBehind zwróci błąd, "nie istnieje w bieżącym kontekście". Powiązanie w .designer.cs odbywa się w oparciu o właściwość "Dziedziczenia" dyrektywy @ Page w pliku aspx wraz z przestrzenią nazw i klasą pliku .aspx.cs CodeBehind. Końcowy segment właściwości "Inherits" musi być zgodny z klasą zdefiniowaną zarówno w pliku CodeBehind, jak i pliku .designer.cs, a segmenty poprzedzające muszą być zgodne z przestrzenią nazw plików .designer.cs i CodeBehind.

przykład: 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 { ... } 
} 

uwaga: kodzie klasy plik musi dziedziczyć z klasy strony, lub ich pochodnych.

myfile.designer.aspx.cs

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

Uwaga: klasa .designer.cs nie dba o dziedziczeniu, tak że nazwa klasy dopasowuje kodzie oraz plików aspx.

można zregenerować utracony plik .designer tak (w3cgeek.com "Regenerate designer.cs«):

  1. Utwórz nowy, pusty plik w tym samym katalogu co swoimi .aspx i .aspx.cs plików o nazwie» myfile.aspx.designer.cs "gdzie" mójplik "to nazwa plików .aspx i .aspx.cs, które chcesz połączyć.
  2. Dodaj przestrzeń nazw z pustą klasą do nowego pliku i upewnij się, że ich nazwy odpowiadają przestrzeni nazw i klasom określonym w plikach .aspx i .aspx.cs, które łączysz.
  3. Zapisz plik .designer.cs, dokonaj zmian w pliku .aspx (np. Dodając spację) i zapisz plik .aspx.

Program Visual Studio powinien automatycznie wypełnić plik .designer.cs wszystkimi niezbędnymi kodami, aby połączyć pliki .aspx i CodeBehind. Błędy "nie istnieje w bieżącym kontekście" powinny już zniknąć!

EDYCJA: Dodałem instrukcje .designer.cs, ponieważ link jest martwy, który został pierwotnie opublikowany przez p.campbell.