註解:

Dreamweaver CC (含) 以後版本的使用者介面已經簡化了。因此,您在 Dreamweaver CC 和更新版本中可能會找不到本文所描述的一些選項。如需詳細資訊,請參閱本文

關於自訂伺服器行為

Dreamweaver 隨附一組內建的伺服器行為,可讓您輕鬆地在網站新增動態功能。您可以建立符合自己開發需要的伺服器行為,或是從 Dreamweaver Exchange 網站取得伺服器行為,以便擴充 Dreamweaver 的功能。

在建立您自己的伺服器行為之前,請先檢閱 Dreamweaver Exchange 網站,看看在其他人已經建立的伺服器行為中,是否有與您想新增到自己網站中的相同功能。通常協力廠商的開發人員已建立並測試了符合您需要的伺服器行為。

存取 Dreamweaver Exchange

  1. 在 Dreamweaver 中,用以下其中一種方式存取 Dreamweaver Exchange:
    • 選取「說明>Dreamweaver Exchange」。

    • 選取「視窗>伺服器行為」,按一下加號 (+) 按鈕,然後選取「取得更多伺服器行為」。

    Dreamweaver Exchange 網頁會在您的瀏覽器中開啟。

  2. 使用您的 Adobe ID 登入 Exchange,或者如果您還沒有為自己建立 Dreamweaver Exchange ID,則依循指示來開啟 Adobe 帳戶。

在 Dreamweaver 中安裝伺服器行為或其他擴充功能

  1. 選取「命令>管理擴充功能」以啟動「擴充功能管理員」。
  2. 選取「檔案>在擴充功能管理員中安裝套件」。

    如需詳細資訊,請參閱使用 Extension Manager

自訂伺服器行為工作流程

如果您是精通 ColdFusion、JavaScript、VBScript 或 PHP 的網頁開發人員,可以撰寫自己的伺服器行為。建立伺服器行為的步驟包括下列工作:

  • 撰寫一或多個程式碼區塊以執行必要的動作。

  • 指定程式碼區塊在網頁 HTML 程式碼中的插入位置。

  • 如果伺服器行為需要參數的指定值,則會建立對話方塊,用它來提示網路開發人員要套用行為,以提供適當的值。

  • 將伺服器行為供其他人使用之前先加以測試。

使用伺服器行為建立器

使用「伺服器行為建立器」新增程式碼區塊,或由行為插入網頁的程式碼區塊。

  1. 在「伺服器行為」面板 (「視窗>伺服器行為」) 中,按一下加號 (+) 按鈕,然後選取「新增伺服器行為」。
  2. 從「文件類型」彈出式選單中,選取您正在為其開發伺服器行為的文件類型。
  3. 在「名稱」方塊中,輸入伺服器行為的名稱。
  4. (選擇性) 若要複製現有的伺服器行為,以便新增到您所建立的行為,請選取「複製現有的伺服器行為」選項,然後在「複製行為」彈出式選單中選取伺服器行為。按一下「確定」。

    「伺服器行為建立者」對話方塊便會出現。

  5. 若要新增程式碼區塊,請按一下加號 (+) 按鈕,輸入程式碼區塊的名稱,然後按一下「確定」。

    您所輸入的名稱會出現在「伺服器行為建立器」中,而「程式碼區塊」方塊中會出現適當的 Script 標籤。

  6. 在「程式碼區塊」方塊中,輸入實作伺服器行為必要的執行階段程式碼。

    註解:

    在「程式碼區塊」方塊中輸入程式碼時,您只可以為每個已命名的程式碼區塊 (例如 myBehavior_block1myBehavior_block2myBehavior_blockn 等) 插入單一標籤或程式碼區塊。如果您必須輸入多個標籤或程式碼區塊,請在每次輸入時都建立個別的程式碼區塊。您也可以從其他網頁複製及貼上程式碼。

  7. 將插入點放在要在程式碼區塊中插入參數的位置,或是選取要以參數取代的字串。
  8. 按一下「插入參數至程式碼區塊」按鈕。
  9. 在「參數名稱」方塊中輸入參數的名稱 (例如,Session),然後按一下「確定」。

    即會在定義參數前程式碼區塊中插入點的所在位置插入參數。如果您選取了字串,則所選取字串在程式碼區塊中的每個實體都會以參數標記來取代 (例如,@@Session@@)。

  10. 從「插入程式碼」彈出式選單中選取選項,以指定內嵌程式碼區塊的位置。
  11. (選擇性) 若要指定關於伺服器行為的其他資訊,請按一下「進階」按鈕。
  12. 若要建立更多程式碼區塊,請重複步驟 5 到 11。
  13. 如果伺服器行為需要提供參數,您就必須建立對話方塊,以便接受套用行為的人所提供的參數。請參閱底下的連結。
  14. 在執行建立伺服器行為的必要步驟之後,請按一下「確定」。

    「伺服器行為」面板會列出伺服器行為。

  15. 測試伺服器行為並確定它正確運作。

進階選項

在指定過原始碼和每個程式碼區塊的插入位置之後,便完整地定義了伺服器行為。在大部分的情況下,您不需要指定任何其他的資訊。

如果您是進階使用者,便可以設定下列所有選項:

識別符

指定是否應該將程式碼區塊視為識別名稱。

依預設值,每個程式碼區塊都是識別名稱。如果 Dreamweaver 在文件的任何位置發現識別符程式碼區塊,便會在「伺服器行為」面板中列出該行為。使用「識別符」選項來指定是否應該將程式碼區塊視為識別符。

在伺服器行為的程式碼區塊中,至少必須要有一個是識別符。如果下列一個條件成立,程式碼區塊就不應該是識別名稱:相同的程式碼區塊由其他一些伺服器行為使用;或者程式碼區塊過於簡單,因此可能會在網頁上自然出現。

伺服器行為標題

在「伺服器行為」面板中指定行為的標題。

當網頁設計人員按一下「伺服器行為」面板上的加號 (+) 按鈕時,新伺服器行為的標題就會出現在彈出式選單中。當設計人員將伺服器行為的實體套用至文件時,行為就會出現在「伺服器行為」面板中已套用行為的清單中。請使用「伺服器行為標題」方塊,為「加號 (+)」彈出式選單和已套用行為的清單指定內容。

方塊中的初始值是您在「新增伺服器行為」對話方塊中所提供的名稱。在定義參數時,會自動更新名稱,如此參數就會出現在伺服器行為名稱後的括號內。

Set Session Variable (@@Name@@, @@Value@@)

如果使用者接受預設值,則在括號之前的所有內容會出現在「加號 (+)」彈出式選單中 (例如,Set Session Variable)。名稱加上參數會出現在已套用行為的清單中,例如,Set Session Variable ("abcd", "5")。

選取程式碼區塊

指定當使用者在「伺服器行為」面板中選取行為時,會選取何種程式碼區塊。

當您套用伺服器行為時,該行為中的其中一個程式碼區塊就會指定為「要選取的程式碼區塊」。如果您套用伺服器行為,然後在「伺服器行為」面板中選取該行為,在「文件」視窗中便會選取指定的區塊。根據預設,Dreamweaver 會選取不在 html 標籤上方的第一個程式碼區塊。如果所有程式碼區塊都在 html 標籤上方,則會選取第一個程式碼區塊。進階使用者可以指定要選取哪一個程式碼區塊。

建立程式碼區塊

您在「伺服器行為建立器」中建立的程式碼區塊會封裝在出現於「伺服器行為」面板中的伺服器行為中。該程式碼可以是指定之伺服器模式的任何有效執行階段程式碼。例如,如果您選擇 ColdFusion 作為自訂伺服器行為的文件類型,則您撰寫的程式碼必須是在 ColdFusion 應用程式伺服器上執行的有效 ColdFusion 程式碼。

您可以直接在「伺服器行為建立器」內建立程式碼區塊,或者您可以從其他來源複製及貼上程式碼。您在「伺服器行為建立器」中建立的每個程式碼區塊必須是一個單一的標籤或 Script 區塊。如果您需要插入多個標籤區塊,請將它們分割成為單獨的程式碼區塊。

程式碼區塊中的條件

Dreamweaver 可讓您開發包含控制項陳述式的程式碼區塊,而這些陳述式是依條件執行的。「伺服器行為建立器」會使用 ifelseifelse 陳述式,而且也可以包含伺服器行為參數。這可以讓您根據伺服器行為參數之間的 OR 值關係,插入替代的文字區塊。

下列範例會顯示 ifelseifelse 陳述式。方括號 ([ ]) 代表選擇性的程式碼,而星號 (*) 代表零或更多實體。若要只在特定條件或多個條件成立時,執行部分或是整個程式碼區塊,請使用下列語法:

<@ if (expression1) @>    conditional
text1[<@ elseif (expression2) @>    conditional text2]*[<@ else @> 
    conditional text3]<@ endif @>

條件運算式可以是任何能夠使用 JavaScript 的 eval() 函式進行評估的 JavaScript 運算式,而且它還能包含以 @@ 所標記的伺服器行為參數 (若要區分參數和 JavaScript 的變數和關鍵字之間的差異,@@ 是必要的)。

有效率地使用條件運算式

insertText XML 標籤中使用 ifelseelseif 指示詞時,參與的文字會預先處理以解析 if 指示詞,並決定要將哪個文字包含在結果中。ifelseif 指示詞會將運算式視為引數。條件運算式相當於 JavaScript 條件運算式,而且它還能包含伺服器行為參數。諸如此類的指示詞,能讓您根據伺服器行為參數的值或其間的關係,在替代的程式碼區塊之間加以選擇。

例如,下列 JSP 程式碼來自使用條件程式碼區塊的 Dreamweaver 伺服器行為:

@@rsName@@.close(); 
<@ if (@@callableName@@ != '') @> 
@@callableName@@.execute(); 
@@rsName@@ = @@callableName@@.getResultSet();<@ else @> 
@@rsName@@ = Statement@@rsName@@.executeQuery(); 
<@ endif @> 
@@rsName@@_hasData = @@rsName@@.next();

條件程式碼區塊會以 <@ if (@@callableName@@ != '') @> 開頭,並以 <@ endif @> 結尾。依照程式碼來看,如果使用者在伺服器行為的「參數」對話方塊中輸入 @@callableName@@ 參數的值,也就是說,如果@@callableName@@ 參數值不是 Null,或者 (@@callableName@@ != ''),便會以下列陳述式取代條件程式碼區塊:

@@callableName@@.execute(); 
@@rsName@@ = @@callableName@@.getResultSet();

否則,便以下列陳述式取代條件程式碼區塊:

@@rsName@@ = Statement@@rsName@@.executeQuery();

定位程式碼區塊

當您使用「伺服器行為建立器」建立程式碼區塊時,必須指定要在哪裡將此程式碼區塊插入網頁的 HTML 程式碼中。

例如,如果您將程式碼區塊插入開頭 <html> 標籤的上方,接下來必須指定該程式碼區塊相對於頁面之 HTML 程式碼中該區段中其他標籤、Script 和伺服器行為的位置。典型的範例包括:將行為置於任何資料集查詢的前方或後方,而這些資料集查詢同時存在於網頁程式碼中開頭 <html> 標籤的上方。

當您在「插入程式碼」彈出式選單中選取了定位選項之後,「相對位置」彈出式選單中的可用選項亦會隨之變更,為該網頁段落提供相關選項。例如,如果您在「插入程式碼」彈出式選單中選取了「在 <html> 標籤上方」,則「相對位置」彈出式選單中可使用的定位選項將會反映出該網頁段落的相關選擇。

下表顯示程式碼區塊插入選項,以及可在每個選項使用的相對定位選項:

插入程式碼選項

相對位置選項

在 <html> 標籤上方

  • 這個檔案的開頭

  • 在資料集之前

  • 在資料集之後

  • <html> 標籤上方

  • 自訂位置

在 </html> 標籤之下

  • 在檔案結束前

  • 在資料集關閉前

  • 在資料集關閉之後

  • </html> 標籤之後

  • 自訂位置

相對於一個特別的標籤

在「標籤」彈出式選單中選取標籤,然後在標籤定位選項中進行選擇。

相對於選取內容

選取範圍前

選取範圍後

取代這個選取範圍

圍繞選取範圍

若要指定自訂位置,您必須為程式碼區塊指定權數。當您需要以特別順序插入一個以上的程式碼區塊時,請使用「自訂位置」選項。例如,如果要在開啟資料集的程式碼區塊之後插入三個依順序排列的程式碼區塊系列,您可以為第一個區塊輸入 60 的權數,第二個輸入 65,第三個輸入 70。

根據預設,Dreamweaver 會將所有在 <html> 標籤上方插入的資料集開頭程式碼區塊的權數指定為 50。如果有兩個以上之區塊的權數符合,Dreamweaver 便會隨機設定區塊之間的順序。

定位程式碼區塊 (一般說明)

  1. 使用「伺服器行為建立器」撰寫程式碼區塊。
  2. 在「伺服器行為建立器」對話方塊中,從「插入程式碼」彈出式選單中選取您要插入程式碼區塊的位置。
  3. 在「伺服器行為建立器」對話方塊中,選取您在「插入程式碼」彈出式選單中選取位置的相對位置。
  4. 如果您已經完成程式碼區塊的編寫,請按一下「確定」。

    伺服器行為會在「伺服器行為」面板 (「視窗>伺服器行為」) 列出;按一下加號 (+) 按鈕以檢視伺服器行為。

  5. 測試伺服器行為並確定它正確運作。

在網頁上相對於另一個標籤的位置上定位程式碼區塊

  1. 在「插入程式碼」彈出式選單中,選取「相對於一個特別的標籤」。
  2. 在「標籤」方塊中輸入標籤,或從彈出式選單中選取一個標籤。

    如果您輸入標籤,請不要包含角括號 (< >)。

  3. 透過在「相對位置」彈出式選單中選擇選項來指定標籤的相對位置。

將程式碼區塊定位在網頁設計人員所選取之標籤的相對位置

  1. 在「插入程式碼」彈出式選單中,選取「相對於選取內容」。
  2. 透過在「相對位置」彈出式選單中選擇選項來指定選取範圍的相對位置。

    您可以在選取範圍之前或之後插入程式碼區塊。您也可以用程式碼區塊來取代選取範圍,或者將程式碼區塊繞著選取範圍斷行。

    如果要將程式碼區塊繞著選取範圍斷行,則選取範圍所包含的開頭和結束標籤之間不能包含任何內容,如下所示:

    <CFIF Day=”Monday”></CFIF>

    在選取範圍的開啟標籤之前插入程式碼區塊的開啟標籤片段,並在選取範圍的結束標籤之後插入程式碼區塊的結束標籤片段。

使用 loop 指示詞重複程式碼區塊

若要多次重複部分或是整個程式碼區塊,請使用下列語法:

<@ loop (@@param1@@,@@param2@@) @>    code
block<@ endloop @>

建立伺服器行為時,您可以使用迴圈建構,將程式碼區塊重複指定的次數。<@ loop (@@param1@@,@@param2@@,@@param3@@,@@param_n@@) @> code block <@ endloop @>loop 指示詞跟引數一樣,接受逗號分隔的參數陣列清單。在這種情況下,參數陣列引數可讓使用者為單一參數提供數個值。重複文字將會複製 n 次,其中 n 是參數陣列引數的長度。如果指定一個以上的參數陣列引數,則所有陣列的長度都必須相同。在迴圈進行第 i 次評估時,參數陣列的第 i 個元素便會取代程式碼區塊中的相關參數實體。

當您為伺服器行為建立對話方塊時,即可將控制項新增到讓網頁設計人員建立參數陣列的對話方塊。Dreamweaver 包括簡單陣列控制項,可以讓您用來建立對話方塊。這個控制項叫做「以逗號分隔的文字欄位清單」,可以透過「伺服器行為建立器」來使用。若要建立較大複雜性的使用者介面元素,請參閱 API 文件以建立含有可建立陣列之控制項 (例如,方格控制項) 的對話方塊。

您可以在條件指示詞內,將任何數目的條件或 loop 指示詞巢狀化。例如,您可以指定若運算式成立 (true) 則執行迴圈。

以下範例顯示這種重複程式碼區塊如何用來建立伺服器行為 (此範例是用來存取預存程序的 ColdFusion 行為):

<@ loop (@@param1@@,@@param2@@,@@param3@@,@@param_n@@) @>    code block 
<@ endloop @>
<CFSTOREDPROC procedure="AddNewBook" 
    datasource=#MM_connection_DSN# 
    username=#MM_connection_USERNAME# 
    password=#MM_connection_PASSWORD#> 
<CFPROCPARAM type="IN" dbvarname="@CategoryId" value="#Form.CategoryID#" 
    cfsqltype="CF_SQL_INTEGER"> 
<CFPROCPARAM type="IN" dbvarname="@ISBN" value="#Form.ISBN#" 
    cfsqltype="CF_SQL_VARCHAR"> 
</CFSTOREDPROC>

在這個範例中,CFSTOREDPROC 標籤可以包含零或多個 CFPROCPARAM 標籤。然而,如果不支援 loop 指示詞,就無法在插入的 CFSTOREDPROC 標籤內包含 CFPROCPARAM 標籤。如果要在不使用 loop 指示詞的情況下建立為伺服器行為,您需要將這個範例分隔成兩個部分:主要的 CFSTOREDPROC 標籤以及其參與類型為多重的 CFPROCPARAM 標籤。

使用 loop 指示詞,便可以如下所示撰寫相同的程序:

<CFSTOREDPROC procedure="@@procedure@@" 
datasource=#MM_@@conn@@_DSN# 
username=#MM_@@conn@@_USERNAME# 
password=#MM_@@conn@@_PASSWORD#> 
<@ loop (@@paramName@@,@@value@@,@@type@@) @> 
    <CFPROCPARAM type="IN" 
    dbvarname="@@paramName@@" 
    value="@@value@@" 
    cfsqltype="@@type@@"> 
<@ endloop @> 
</CFSTOREDPROC>

註解:

每個「@>」之後的新行都會忽略。

如果使用者在「伺服器行為建立器」對話方塊中輸入下列參數值:

procedure = "proc1" 
conn = "connection1" 
paramName = ["@CategoryId", "@Year", "@ISBN"] 
value = ["#Form.CategoryId#", "#Form.Year#", "#Form.ISBN#"] 
type = ["CF_SQL_INTEGER", "CF_SQL_INTEGER", "CF_SQL_VARCHAR"]

則伺服器行為會在網頁中插入下列執行階段程式碼:

<CFSTOREDPROC procedure="proc1" 
datasource=#MM_connection1_DSN# 
username=#MM_connection1_USERNAME# 
password=#MM_connection1_PASSWORD#> 
<CFPROCPARAM type="IN" dbvarname="@CategoryId" value="#Form.CategoryId#" 
    cfsqltype="CF_SQL_INTEGER"> 
<CFPROCPARAM type="IN" dbvarname="@Year" value="#Form.Year#" 
    cfsqltype="CF_SQL_INTEGER"> 
<CFPROCPARAM type="IN" dbvarname="@ISBN" value="#Form.ISBN#" 
    cfsqltype="CF_SQL_VARCHAR"> 
</CFSTOREDPROC>

註解:

除了做為條件指示詞運算式的某個部分之外,參數陣列不能在迴圈之外使用。

使用 loop 指示詞的 _length 和 _index 變數

loop 指示詞包含兩個內建變數,可用於內嵌的 if 條件。變數為:_length_index_length 變數會評估 loop 指示詞所處理的陣列長度,而 _index 變數則會評估 loop 指示詞目前的索引。若要確保這兩個變數都只會視為指示詞,而不會視為實際參數並傳遞到迴圈內,請不要在 @@ 內包含這兩個變數。

使用內建變數的範例是:將其套用至網頁指示詞的 import 屬性中。import 屬性需要逗號分隔的套件。如果 loop 指示詞擴充到整個 import 屬性,您將只會在迴圈的第一個疊代運算上輸出屬性名稱 import=,這會包含結束的雙引號 ("),而不會在迴圈的最後一個疊代運算上輸出逗號。您可以使用內建變數,將其表示如下:

<@loop (@@Import@@)@> 
<@ if(_index == 0)@>import=" 
<@endif@>@@Import@@<@if (_index == _length-1)@>"<@else@>, 
<@ endif @> 
<@endloop@>

要求伺服器行為的參數

伺服器行為經常需要網頁設計人員提供參數值。您必須在將伺服器行為程式碼插入網頁之前,先將這個值插入。

藉由在程式碼中定義設計人員所提供的參數,就能建立對話方塊。然後,您會產生伺服器行為的對話方塊,以便向網頁設計人員提示參數值。

註解:

如果您指定程式碼應該插入網頁設計人員所選擇之特定標籤的相對位置上 (也就是說,您在「插入程式碼」彈出式選單中選擇了「相對於一個特別的標籤」),則參數會在沒有您操作的情況下加入程式碼區塊中。該參數會將標籤選單加入該行為的對話方塊中,讓網頁設計人員可以選取標籤。

定義伺服器行為程式碼中的參數

  1. 在程式碼中您要插入提供之參數值的位置,輸入參數標記。此參數具有下列語法:
    @@parameterName@@
  2. 在參數標記中 (@@) 包含 formParam 字串:
    <% Session(“lang_pref”) = Request.Form(“@@formParam@@”); %>

    例如,如果伺服器行為包含下列程式碼區塊:

    <% Session(“lang_pref”) = Request.Form(“Form_Object_Name”); %>

    若要讓網頁設計人員提供 Form_Object_Name 的值,請將字串包含在參數標記 (@@) 中:<% Session(“lang_pref”) = Request.Form(“@@Form_Object_Name@@”); %>

    <% Session(“lang_pref”) = Request.Form(“@@Form_Object_Name@@”); %>

您也可以反白標示該字串,然後按一下「插入參數至程式碼區塊」按鈕。輸入參數名稱,然後按一下「確定」。Dreamweaver 會使用由參數標記所包含的指定參數名稱來取代反白標示字串的每個實體。

Dreamweaver 會使用您包含在參數標記內的字串,在它所產生的對話方塊中為控制項加上標籤 (請參閱下列程序)。在上一個範例中,Dreamweaver 會建立具有下列標籤的對話方塊:

註解:

伺服器行為程式碼中的參數名稱不可以有任何空格。因此,對話方塊標籤不能有任何空格。如果您想要在標籤內包含空格,您可以編輯所產生的 HTML 檔。

輸入參數名稱
輸入參數名稱

為您的伺服器行為建立要求參數值的對話方塊

  1. 在「伺服器行為建立器」中按一下「下一步」。
  2. 若要變更對話方塊控制項的顯示順序,請選取參數,再按一下向上和向下箭頭。
  3. 若要變更參數的控制項,請選取參數,然後選取「顯示為」欄中的另一個控制項。
  4. 按一下「確定」。

    Dreamweaver 會產生一個對話方塊,內含您所定義每個設計人員提供之參數的標示控制項。

檢視對話方塊

  1. 按一下「伺服器行為」面板 (「視窗>伺服器行為」) 中的加號 (+) 按鈕,然後從彈出式選單中選取自訂的伺服器行為。

編輯您為伺服器行為建立的對話方塊

  1. 在「伺服器行為」面板 (「視窗>伺服器行為」) 中,按一下加號 (+) 按鈕,然後從彈出式選單中選取「編輯伺服器行為」。
  2. 從清單中選取伺服器行為,然後按一下「開啟」。
  3. 按一下「下一步」。

    便會出現一個對話方塊,列出您在程式碼中定義之所有設計人員提供的參數。

  4. 若要變更對話方塊控制項的顯示順序,請選取參數,再按一下向上和向下箭頭。
  5. 若要變更參數的控制項,請選取參數,然後選取「顯示為」欄中的另一個控制項。
  6. 按一下「確定」。

編輯和修改伺服器行為

您可以編輯任何使用「伺服器行為建立器」建立的伺服器行為,包括您從 Dreamweaver Exchange 網站下載的伺服器行為,以及來自其他協力廠商開發人員的伺服器行為。

如果您將伺服器行為套用至網頁,然後在 Dreamweaver 中編輯行為,舊版行為的實體將不會在「伺服器行為」面板中出現。「伺服器行為」面板會在網頁中搜尋符合已知的伺服器行為程式碼的程式碼。如果伺服器行為的程式碼變更了,面板就無法在該網頁上辨識舊版的行為。

在面板中保留舊版與新版的行為

  1. 按一下「伺服器行為」面板 (「視窗>伺服器行為」) 上的加號 (+) 按鈕,選取「新增伺服器行為」,並為舊版的伺服器行為建立複本。

編輯以伺服器行為建立器建立的伺服器行為程式碼

  1. 在「伺服器行為」面板 (「視窗>伺服器行為」) 中,按一下加號 (+) 按鈕,然後從彈出式選單中選取「編輯伺服器行為」。

    「編輯伺服器行為」對話方塊會顯示出目前伺服器技術的所有行為。

  2. 選取伺服器行為並按一下「編輯」。
  3. 選取適當的程式碼區塊並修改程式碼、參數標記,或是對要插入到網頁中的程式碼區塊進行定位。
  4. 如果修改過的程式碼不包含任何設計人員提供的參數,請按一下「確定」。

    Dreamweaver 會重新產生伺服器行為,而不顯示對話方塊。新的伺服器行為會出現在「伺服器行為」面板的「加號 (+)」彈出式選單中。

  5. 如果修改過的程式碼包含設計人員提供的參數,請按一下「下一步」。

    Dreamweaver 會詢問您是否要建立新的對話方塊,覆寫舊的對話方塊。進行變更並按一下「確定」。

    Dreamweaver 會將所有變更都儲存在伺服器行為的 EDML 檔案中。

程式碼撰寫方針

一般而言,伺服器行為的程式碼應該要穩定而且不佔空間。網路應用程式開發人員對加入他們的網頁之程式碼是非常敏感的。請依照文件類型語言 (ColdFusion、JavaScript、VBScript 或 PHP) 普遍接受的程式碼實作方式。在撰寫註解時,請考慮可能需要了解程式碼的不同技術對象,如網路和互動設計者或其他網路應用程式開發人員。請包含能準確描述程式碼用途的註解,以及在網頁內包含註解的任何特殊指示。

請在建立伺服器行為時留意下列程式碼撰寫方針:

錯誤檢查

重要的需求。伺服器行為的程式碼應該要能妥善地處理錯誤情況。試著預見每種可能的錯誤情況。例如,如果參數要求失敗的話怎麼辦? 如果查詢沒有傳回記錄的話怎麼辦?

唯一名稱

有助於確保您的程式碼是可以清楚識別的,並能避免與現有的程式碼產生名稱衝突。例如,如果網頁包含了稱為 hideLayer() 的函式以及稱為 ERROR_STRING 的全域變數,而您的伺服器行為也插入了使用這些名稱的程式碼,則伺服器行為便可能會與現有的程式碼衝突。

程式碼前置詞

可讓您在網頁中識別自己的執行階段函式和全域變數。有一個慣例是使用您的姓名縮寫。絕對不要使用 MM_ 前置詞,因為它只保留給 Dreamweaver 使用。Dreamweaver 會在所有函式和全域變數之前加上前置詞 MM_,以防止它們與您撰寫的任何程式碼發生衝突。

var MM_ERROR_STRING = "..."; 
function MM_hideLayer() {

避免類似的程式碼區塊

以讓您撰寫的程式碼不會與其他區塊中的程式碼過於相似。如果程式碼區塊看起來太像網頁上的另一個程式碼區塊,「伺服器行為」面板可能會將第一個程式碼區塊錯誤識別為第二個程式碼區塊的實體 (或反之)。有一個簡單的解決方案是在程式碼區塊中加入註解,好讓它更為獨特。

測試伺服器行為

Dreamweaver Exchange 建議您在建立的每一個伺服器行為上執行下列測試:

  • 從「伺服器行為」面板套用行為。如果出現對話方塊的話,請在每個欄位中輸入有效的資料,然後按一下「確定」。在套用行為時,請確定沒有發生錯誤。確認伺服器行為的執行階段程式碼出現在「程式碼」檢視窗中。

  • 再套用一次伺服器行為,然後在對話方塊的每個欄位中輸入無效的資料。試著讓欄位保留空白、使用較大的數字或負數、使用無效的字元 (如 /、?、:、* 等等),以及在數字欄位中使用字母。您可以撰寫表單驗證程序來處理無效的資料 (驗證程序與手寫程式碼有關,而這超過本手冊的範圍)。

    在將伺服器行為成功套用至網頁之後,請確認下列事項:

  • 檢查「伺服器行為」面板,確定伺服器行為的名稱有出現在加入網頁的行為之清單中。

  • 如果可能的話,請確認伺服器端 Script 圖示出現在網頁上。一般伺服器端 Script 圖示是金黃色的外觀。若要查看圖示,請啟用「隱藏元素」(「檢視>視覺輔助>隱藏元素」)。

  • 在「程式碼」檢視 (「檢視 > 程式碼」) 中,確認並未產生任何無效的程式碼。

    此外,如果您的伺服器行為在與資料庫建立連線的文件中插入程式碼,請建立一個測試資料庫來測試插入文件中的程式碼。透過定義產生不同的資料集和相異的資料集大小之查詢來確認連線。

    最後,將網頁上傳到伺服器並在瀏覽器中開啟它。檢視網頁的 HTML 原始碼,並確認伺服器端的 Script 並未產生任何無效的 HTML。

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策