七 建立自定義的HTML Helper 轉

2022-03-11 19:58:34 字數 3767 閱讀 1291

**

作者翻譯自官方的教程

這篇文章我們來討論一下如何建立我們自己的html helper ,以便在mvc檢視中使用。使用html

helper可以減少書寫那些煩人的html標記。

在這篇文章的第一部分,我們來談一下asp.net mvc框架中現有的html

helper,然後我們再來研究兩種建立自定義html helper的方法:通過靜態方法建立和通過擴充套件方法建立

一、理解html helper

html

helper就是乙個返回字串的方法,這個字串能提供你想要的各種型別的內容。比如,我們可以使用html helper呈顯標準

的html標記(和

等),我們也可以使用html helper呈顯一些稍複雜的內容,如屬性頁或html

table**。

asp.net mvc框架主要包含下列標準的html helper,但不全。

html.actionlink()

html.beginform()

html.checkbox()

html.dropdownlist()

html.endform()

html.hidden()

html.listbox()

html.password()

html.radiobutton()

html.textarea()

html.textbox()

下面的表單中,使用html

helper的兩個方法html.beginform()和html.textbox()呈顯了乙個表單。

《圖1》

listing 1 – views\home\index.aspx

page language="c#" autoeventwireup="true" codebehind="index.aspx.cs"

"-//w3c//dtd xhtml 1.0 transitional//en" "

">

">

1    

html.beginform()方法用來建立一對結束標記。

當然我們也可以不使用using語句塊,我們可以使用html.endform()方法來產生結束標記。使用哪種方式可以根據自己的情況來選擇。

html.textbox()方法用來顯示標記,如果我們在瀏覽器中點選「檢視原始檔」會看到我們的html helper變成html標記了。

listing 2 –

index.aspx source

autoeventwireup="false" codebehind="index.aspx.cs"

xhtml 1.0 transitional//en" "

">

">

注意:要用

%>來顯示html.text()的內容,而不能用標記,否則不會在瀏覽器顯示任何資料。

在asp.net

mvc框架中包含一部分html helper,好多情況下我們需要自定義html helper來擴充套件mvc框架。在下面的部分我們來學習兩種自定義html

helper的方法。

二、使用靜態方法來建立html helper

最簡單的建立html

helper的途徑是使用返回字串的靜態方法。假設,我們要建立乙個html helper,該html

helper用來呈顯標籤,我們可以使用下面的**來實現

listing 2 –

helpers\labelhelper.cs

using system;

namespace

labelhelper

", target,

text);               

}          

} }

在上面的**中沒有什麼特殊的地方,label()方法返回乙個html字串。

下面的**就是使用我們的labelhelper來呈顯標籤的。這裡需要注意的是,檢視中包含了乙個

views\home\index2.aspx

autoeventwireup="true" codebehind="index2.aspx.cs"

"-//w3c//dtd xhtml 1.0 transitional//en" "

">

" >

(html.beginform())           %>

三、使用擴充套件方法來建立html

helper

如果我們想讓我們自定義的html helper像asp.net mvc自帶的html

helper那樣直接使用的話,需要使用擴充套件方法。擴充套件方法就是讓我們向已存在的類中加入新方法。我們可以給htmlhelper類中擴充套件新方法,以達到我們建立自定義html

helper的目的。

下面的**中向htmlhelper類中擴充套件了乙個名子為label()的新方法,這裡有兩點內容需要我們注意:

1、 我們自定義擴充套件方法的類是乙個靜態類。

2、 label()方法的第乙個引數有乙個this關鍵字宣告,這第乙個引數就是指示我們這個擴充套件方法是擴充套件的哪個類。

listing

3 – helpers\labelextensions.cs

using system;

using

public static class

labelextensions

", target, text);

}     

} }

在我們建立完擴充套件方法後,我們重新生成我們的程式,這時我們就可以在vs的智慧型感知列表中指到我們的label()方法,所不一樣的是:我們這個擴充套件方法前面的圖示帶有乙個藍色的向下箭頭。

《圖2》

下面是我們使用擴充套件方法label()的頁面檢視**

listing 4 –

views\home\index3.aspx

autoeventwireup="true" codebehind="index3.aspx.cs"

"-//w3c//dtd xhtml 1.0 transitional//en" "

">

" >

(html.beginform())

%>

總結

在這篇文章中我們學習兩種建立自定義html

helper的方法。

1、 建立返字串的靜態方法建立自定義html helper

2、 使用對htmlhelper類編寫擴充套件方法來建立自定義html helper

在這篇文章中,我們建立了乙個很簡單的自定義html

helper,我們可以編寫複雜的html helper,如呈顯樹狀目錄,選單或資料**等

建立自定義控制項

在前一篇文章中 中,我將乙個公共視窗控制項進行了之類劃分,目的是為了修飾其行為或者說是擴充套件其功能。有時候,你只能將公共視窗控制項擴充套件到這樣的底部。我遇到的乙個例子是乙個比較普遍的話題即需要乙個格網控制項並且編輯tabular資料。我對clistctrl進行了之類劃分,並擴充套件使其能夠進行子...

建立自定義物件

你並不侷限於前幾節所討論的jscript的內建物件,你可以自定義包含有你自己的方法和屬性的物件來擴充jscript,這是jscript的乙個強大的特性。例如,你可以建立乙個名為webuser的物件,它包含參觀你網點的使用者的資訊,這個物件可以包含諸如使用者名稱 密碼和註冊狀態之類的屬性,將所有這些屬...

建立自定義選單

直接用類呼叫建立選單方法即可 整個思路步驟 1.呼叫介面獲取access token 2.準備json資料,需要傳過去的選單 3.採用 access token 介面進行建立即可 如下 進行自定義新增選單 第乙個步驟 獲取token ch curl init curl setopt ch,curlo...