2008-09-16 40 views
122

Jaka jest różnica między CodeFile = "file.ascx.cs" i kodzie = "file.ascx.cs" w deklaracji formantu użytkownika ASP.NET?CodeFile vs kodzie

Czy jest jeden nowszy czy zalecany? Czy też mają określone zastosowanie?

Odpowiedz

149

CodeBehind: Wymaga kompilacji (model ASP.NET 1.1). Skompilowany plik binarny jest umieszczany w folderze bin witryny. Przed wdrożeniem należy wykonać kompilację w programie Visual Studio. Jest to dobry model, gdy nie chcesz, aby kod źródłowy był widoczny jako zwykły tekst. Na przykład podczas dostarczania do klienta, któremu nie trzeba podawać kodu.

CodeFile: Dostarczasz plik źródłowy z rozwiązaniem do wdrożenia. Środowisko wykonawcze ASP.NET 2.0 kompiluje kod w razie potrzeby. Skompilowane pliki są w Microsoft.NET [.NET version] \ Tymczasowe pliki ASP.NET.

+2

Czy to oznacza, że ​​programista musi ręcznie zmienić atrybut dyrektywy Page czy też istnieje sposób na stworzenie projektu WWW, który domyślnie wybiera kodbeve lub codefile za każdym razem, gdy dodawana jest nowa strona internetowa? –

+34

Sposób, w jaki widzę to CodeFile, ma być użyty do "WebSite", a "Codebehind" jest przeznaczony do "projektu aplikacji sieci Web", ponieważ musi zostać skompilowany. Przekształcając "Witrynę" w "Projekt aplikacji WWW" możemy potrzebować ręcznie zmienić wszystkie wystąpienia CodeFile na Codebehind! – renegadeMind

+1

CodeFiles są ładne podczas programowania, ponieważ możesz przetestować zmiany po prostu zapisując i odświeżając stronę bez konieczności budowania projektu. Możesz nadal "Opublikuj" pliki modeli kompilacji .Net 2+ CodeFile jako biblioteki DLL, jeśli nie chcesz umieszczać plików .cs i .vb na serwerze produkcyjnym. Podczas publikowania projektu można opcjonalnie wybrać opcję "Prekompilacja", aby przekształcić jeden lub oba pliki .aspx i .cs/.vb w biblioteki DLL, na przykład CodeBehind. – scradam

4

Plik Codebehind należy skompilować przed uruchomieniem, ale w src nie musimy kompilować, a następnie uruchomić .. po prostu zapisz plik.

+1

'ale w src' - masz na myśli' ale w CodeFile'? – mmcrae

3

Pracuję z projektem aplikacji w Visual Studio Express 2012 dla WWW i przy użyciu .NET 4.0. W kodzie znajdującym się za plikami na moje strony logowania i zmiany hasła znalazłem sytuację, w której potrzebowałem zarówno CodeBehind, jak i CodeFile w deklaracji.

Gdybym nie dodać odwołanie pliku kod jak

CodeFile=login.aspx.cs 

Strona internetowa nie analizuje i przeglądarka wyświetla błąd parsera. Nie ma znaczenia, czy skompiluję projekt, czy nie.

Gdybym nie dodawaj kodu za odniesienie jak

CodeBehind=login.aspx.cs 

Odniesienia do klas bezpieczeństwa, takich jak MembershipUser zawieść zarówno w czasie kompilacji i gdy próbuje użyć intellisense z błędem jak „typu lub obszaru MembershipUser nie może być znalezionym". Dodałem odwołanie do System.Web.ApplicationServices zgodnie z wymaganiami środowiska .Net 4.0.

Należy dodać, że te kłopotliwe pliki działają w aplikacji na stronie internetowej utworzonej przy użyciu narzędzia aplikacji IIS. Kiedy otwieram stronę z Visual Studio, nie mam problemów z błędami parsera lub błędami referencyjnymi. To zamieszanie występuje tylko wtedy, gdy otwieram aplikację jako projekt w Visual Studio.

+1

-1: interesujące, może, ale nie odpowiada na pytanie –

+0

Wiem, co masz na myśli John. I może zasługuje na pochwałę, ale naprawdę walczę z tym problemem w tej chwili. Może moje trudności nie wynikają z tej różnicy, ale z czegoś innego. Jednak chociaż przyjęta odpowiedź jest odpowiedzią na pytanie, to nie pomaga w praktycznym problemie, z którym się borykam. Może powinienem otworzyć nowe pytanie. – DavidHyogo

Powiązane problemy