第19章 輔助器方法

2022-04-06 13:19:51 字數 4822 閱讀 4240

* 輔助器方法可以對**塊和標記進行打包,以便在整個mvc框架應用程式中重用。

一、自定義輔助器方法

1.內聯輔助器方法

使用@helper標籤,具有名稱、引數,無返回值,結果直接放到客戶端的響應之中。在執行**估型別(自動轉換)

@helper listarrayitems(string

items)

水果在這:@listarrayitems(viewbag.fruits)

2.外部輔助器方法(擴充套件方法:對htmlhelper物件進行擴充套件,html輔助器方法結果是乙個mvchtmlstring物件)

public

static mvchtmlstring listarrayitems(this htmlhelper html , string

lists)

return

newmvchtmlstring(tag.tostring());

}

@using helpermethods.infrastructure
.......
城市在這:@html.listarrayitems((

string

)viewbag.cities)

htmlhelper類定義的有用的屬性

屬性

描述

routecollection

返回應用程式定義的路由集合

viewbag

返回檢視包資料,從動作方法傳遞給呼叫輔助器方法的檢視

viewcontext

返回viewcontext物件,對請求的細節以及請求的處理方式進行訪問

viewcontext類定義的有用屬性

屬性

描述

controller

返回處理當前請求的控制器

返回描述當前請求的httpcontext物件

ischildaction

當是子動作渲染的檢視時為true

routedata

返回請求路由資料

view

返回已呼叫輔助器方法的iview實現的例項

tagbuilder(建立html)類的一些成員

成員

描述

innerhtml

將元素內容設定成html字串的乙個屬性,賦給這個屬性的值將不進行編碼,可以將它嵌入html元素

setinnertext(string)

設定html元素的文字內容。string引數將被編碼,以安全顯示

addcssclass(string)

對html元素新增乙個css的class

mergeattribute(string,string,bool)

對html元素新增乙個標籤屬性。(引數是標籤屬性名稱,值,是否替換已存在的同名標籤屬性)

命名空間的引入可以放在/views/web.config中。

輔助器方法:為了減少檢視中的重複量,只用於最簡單的內容。

分部檢視:用於更複雜的標記和內容

子動作:需要實現對模型資料的操作時使用。(如果輔助器含有大量的c#語句c#語句多於html元素時建議使用子動作)   

對輔助器方法中的(危險)資料進行編碼:(mvc框架會認為輔助器方法生成的內容是安全的) 

//

有選擇地對輔助器方法中的資料值進行編碼

string encodedmsg =html.encode(msg);

string result = string.format("

這裡是資訊內容:

", encodedmsg);

return

new mvchtmlstring(result);

二、內建的form輔助器方法

1.建立表單元素

beginform輔助器方法的過載

過載

描述

beginform()

建立乙個表單,回遞給源動作方法(引發渲染該表單的動作依法)

beginform(action,controller)

建立乙個表單,回遞給以字串形式指定的動作方法和控制器

beginform(action,controller,method)

建立乙個表單,回遞給以字串形式指定的動作方法和控制器,並指定form元素中method標籤屬性的值

beginform(action,controller,method,attributes)

建立乙個表單,回遞給以字串形式指定的動作方法和控制器,並指定form元素中method標籤屬性的值,指定form元素的標籤屬性(物件的屬性)

beginform(action,controller,routevalues,method,attributes)

建立乙個表單,回遞給以字串形式指定的動作方法和控制器,並指定form元素中method標籤屬性的值,指定form元素的標籤屬性(物件的屬性),為路由配置中的路由片段變數指定乙個值(物件的屬性對應路由變數)

@using (html.beginform(

"createperson

", "

home

", //

動作方法名稱,控制器名

new ,//

路由配置中id片段變數的值

formmethod.post,//

method標籤屬性的值

new //

form元素其他標籤屬性

))// action="/home/createperson/myidvalue" class="personclass" data-formtype="person" method="post">

data_formtype="person" 會被自動的對映成  data-formtype="person"

指定表單使用路由:

@using (html.beginrouteform(

"default

",//

路由名稱

new ,//

路由配置中id片段變數的值

formmethod.post,//

method標籤屬性的值

new //

form元素其他標籤屬性

)))

cols="20" id="mytextarea" name="mytextarea" rows="5">

text box

(文字框)

@html.textbox("mytextbox", "val")

@html.textboxfor(x=>x.mytextbox)

id="mytextbox" name="mytextbox" type="text" value="val" />

select元素

drop-down list

(下拉列表)

@html.dropdownlist

("mylist",

new selectlist(new),"請選擇")

請選擇a

bdrop-down list

(強型別下拉列表)

@html.dropdownlistfor(m=>m.gender,

new selectlist(new))

mf

multiple-select

(多項選擇)

@html.listbox("mylist",

new multiselectlist(new ))

ab

multiple-select

(強型別多項選擇)

@html.listboxfor(x=>x.vals,

new multiselectlist(new ))

ab

注:checkbox渲染了兩個input元素(檢查框和同名的隱藏input元素),因為瀏覽器在檢查框未作出選擇時,

不會遞交檢查框的值,通過隱藏控制項確保mvc框架在作出選擇後從隱藏字段獲得乙個值。

selec t輔助器以(基於ienumerable物件序列)selectlist或multiselectlist為引數(構造器選項可以在初始化時指定多個選擇初值)。

這兩個物件能夠為列表項提取物件(包括模型物件)的值。屬性值和select元素的源list中的值是同一型別(來自於同乙個類)。

第19章 Flash裝置驅動

本文摘自 偶有較小改動 linux 裝置驅動開發詳解 宋寶華 編著 人民郵電出版社 留作紀念。living park 第19章 flash裝置驅動 19.1 linux flash驅動結構 19.1.1 linux mtd系統層次 在linux系統中,提供了mtd memory technology...

重學JS 第19章表單

簡介 基本操作 提交 submit 重置 reset 表單字段的公共屬性 disabled 布林值,表示表單字段是否禁用。form 指標,指向表單字段所屬的表單。這個屬性是唯讀的。name 字串,這個欄位的名字。readonly 布林值,表示這個字段是否唯讀。tabindex 數值,表示這個欄位在按...

015 第19章 組合模式

簡述 組合模式 將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。組合模式包括 樹類 枝類 葉類。樹類 組合中的物件宣告介面,在適當的情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理枝的子部件。枝類 定義有枝節點的行為,用來儲...