有時我們需要在同乙個form表單中進行多個按鈕的提交,來完成不同的功能。因為mvc中乙個表單預設只能提交到乙個action處理,相對比較麻煩。
1、使用客戶端指令碼
我們可以view中加上如下**:
"submit
" value="
submittoabout1
" onclick='
this.form.action="@url.action("about1")"
'/>
"submit
" value="
submittoabout2
" onclick='
this.form.action="@url.action("about2")"
'/>
用來指示不同的按鈕點選後跳轉到不同的action。action方法**如下:
publicstring
about1(formcollection collection)
public
string
about2(formcollection collection)
這樣就實現了點選不同的按鈕跳轉到不同的方法中。
2、在action中判斷按鈕的value值
在view中,不同的input標籤,定義相同的name,如下:
"submit
" value="
submittoabout1
" name="
action
"/>
"submit
" value="
submittoabout2
" name="
action
"/>
然後在action方法中,獲取表單傳過來的資料,獲取name為action的value值,再根據value值去進行判斷。
此種方法我們可以做出改進,新建乙個multibuttonattribute類,該類繼承actionnameselectorattribute類,該類**如下:
[attributeusage(attributetargets.method, allowmultiple = false, inherited = true)]public
class
multibuttonattribute : actionnameselectorattribute
public
string matchformvalue
public
override
bool isvalidname(controllercontext controllercontext, string
actionname, system.reflection.methodinfo methodinfo)
}
其中view中**不變,還是
"submit
" value="
submittoabout1
" name="
action
"/>
"submit
" value="
submittoabout2
" name="
action
"/>
在控制器的action中呼叫:
這樣,點選submit按鈕時,multibutton會根據按鈕的name和value值跳轉到相應的執行方法。
3、判斷按鈕的name值
判斷按鈕的value值有很多不確定的因素,比如按鈕的value值可能會更加客戶的個人愛好而進行改動,或者按鈕需要改成多語言版本的,這時我們根據按鈕的value值來選擇不同的控制器的action時就顯得極其不靈活,這時我們希望通過按鈕的name值來選擇其相應的action方法。同樣還是自定義乙個multibuttonattribute類,該類繼承actionnameselectorattribute類,該類**為:
[attributeusage(attributetargets.method, allowmultiple = false, inherited = true)]public
class
multibuttonattribute : actionnameselectorattribute
public
override
bool isvalidname(controllercontext controllercontext, string
actionname, system.reflection.methodinfo methodinfo)
}
檢視上按鈕**為:
"submit
" value="
submittoabout1
" name="
about1
"/>
"submit
" value="
submittoabout2
" name="
about2
"/>
控制器action**:
這樣就可以根據不同的按鈕的name,控制器來執行其相應的方法了。
學習封裝 MVC 3
一 配置載入類 1 建立配置路由 return array ctrl index action index 2 控制器層 1.判斷配置檔案是否存在 2.判斷當前配置是否存在 3.快取配置 載入單一配置 static public conf array static public function g...
MVC3學習總結
本文是閱讀了scottgu s blog來記錄的,外加自己的學習心得。一 razor razor是乙個新的檢視引擎,它實現了快速,流暢的編碼流程,使得檢視模板跟簡潔乾淨。1 靈活的選擇。add view.新建檢視模板的時候你可以選擇razor cshtml 模板檢視,或aspx c 模板檢視。2 r...
MVC3 安裝部署
iis5.1 1.安裝microsoft net framework 4.0安裝包 2.在iis中發布 建立虛擬目錄,asp.net版本選擇4.0.30196 3.新增mvc的解析 右擊iis中的虛擬目錄選擇 屬性 虛擬目錄 配置 對映 新增 配置如下 可執行檔案 c windows microso...