2009-09-19 7 views
7

nie mogłem znaleźć wiele dokumentacji w interneciejaka jest różnica między <% %> i <script language = "vbscript" runat = "server"> w klasycznym asp?

tak daleko Teraz oczywistą różnicą wydaje się, że mogę mieszać HTML i VBScript przy użyciu „skrypt” tag

na przykład, to jest ok

 
<% public sub display_literal() %> 
    literal 
<% end sub %> 

ale z tagu skrypt powinieneś

 

<script language="vbscript" runat="server"> 
public sub display_literal2() 
    response.write "literal2</br>" 
end sub 
</script> 

na tej stronie

http://www.newobjects.com/pages/ndl/alp/asp-structure.htm

mówi, że

W klasycznym ASP skrypt napisany w języku skryptowym dla domyślnej strony (tj język założony dla znaczników <%%> jest wykonywany drugi - np. cały kod skryptu w tagach <%%> jest inicjowany po wszystkich skryptach < SCRIPT RUNAT = SERVER ...>.

ale zrobiłem kilka testów i nie mogli go zweryfikować ...

Pytam bo miałem skryptu (nie mam go pod ręką teraz), że za pomocą < %%> podał mi błąd, zmieniając go na tag> skryptu rozwiązany problem <, ale chciałbym wiedzieć, dlaczego ....

mimo wszystko, myślę, że powinniśmy użyć tagu skryptu < dla funkcje i procedury, które mają być wywoływane z tagów <%%> prawda?

+0

Miałem wrażenie, że tak naprawdę nie powinny się mieszać. – brianary

Odpowiedz

10

Po pierwsze należy zrozumieć, że istnieje różnica w sposobie obsługi znaczników po stronie serwera script w zależności od tego, czy określony język jest taki sam jak domyślny język strony.

Kolejność jest taka: -

  1. uruchomić wszystkie skrypty w <script runat="server" tagów gdzie język określony nie pasuje do domyślnego języka. Są one wykonywane w kolejności dokumentów.
  2. Uruchom domyślny skrypt. Oznacza to wykonanie domyślnych zapisów w odpowiedzi, w której oczywiście w treści dokumentu znajdują się statyczne treści na stronie (rzeczy nie w tagach runat="server" lub wewnątrz <% %>) i kolejny kod w postaci <% %>.
  3. Uruchom dowolny kod na poziomie globalnym w tagach <script runat="server", w którym język jest zgodny z domyślnym językiem skryptowym.

Należy zauważyć, że wszystkie skrypty mają początkowy zapis przed wykonaniem fazy 1, dlatego też wszystkie funkcje, które mogą być zdefiniowane przez skrypty uruchomione w fazie 3, będą dostępne do wywoływania z fazy 1.

1

Właśnie mieliśmy problem w tej sprawie oraz, dla celów praktycznych, kod wewnątrz <%% > tagi wykonuje przed kodu wewnątrz < skryptu runat = „serwer” > </script >.

Deklaracja funkcji i procedur wydaje nie mieć wpływ tej różnicy w sposób zrozumiały dla IIS tagi Classic ASP - przynajmniej nie używam kodu warunkowego załadunek z „Server.Execute”.

mój serwer uruchamia Microsoft-IIS/5.1, jak w Request.ServerVariables ("SERVER_SOFTWARE").

Powiązane problemy