asp.net mvc 輔助方法
最直觀的便是舉例說明,請看下面:
@Html.TextBox(“name”,"value",new{id="testid",@class="testclass"})
以前一直不理解為何除了class前邊要加@,其他屬性都無需@,現在才知正是因為Html屬性的class是C#保留字,所以在設定class時,需要加上“@”來跳脫。
再看下例:
@Html.TextBox(“name”,"value",ViewData["Dictionnary"] as IDictionary<string,object>)
public ActionResult Test() { IDictionary<string,object> attr=new Dictionary<string,object>(); attr.add("class","test"); attr.add("style","color:red"); attr.add("size","20"); ViewData["Dictionary"]=attr; return View(); }
上述方法正是為了減少重複,無需在每個TextBox()中都定義相同的html屬性。
下拉列表也如此:
@Html.DropdownList("list",ViewData["item"] as SelectList,"請選擇")
由於ASP.NET MVC窗體只能發出GET和POST請求,為了能提供REST類似的方式來處理DELETE操作,同時又能利用同一個視窗來只允許HttpDelete動作,可以利用Html.HttpMethodOverride()這個輔助方法來模擬HTTP DELETE動作,而模擬的方法其實只是將一個隱藏欄位加入視窗中而已。
@using (Html.BeginForm()) { @Html.HttpMethodOverride(HttpVerbs.Delete) @Html.Hidden("id") <input type="submit" value="刪除" /> }
Ajax輔助方法
使用ajax輔助方法時,必須 在頁面或者MasterPage中載入MicrosoftAjax.js與MicrosoftMvcAjax.js這兩個js檔案,並且載入順序要正確。
最常見的Ajax輔助方法有下面兩個:
Ajax.ActionLink()
Ajax.BeginForm()
eg:
@Ajax.ActionLink("Link Text", "Test", new AjaxOptions { UpdateTargetId="ajax"})
下面對AjaxOptions屬性做一簡單介紹:
1.Conform 單擊時會彈出Conform對話方塊
2.HttpMethod 設定Http請求方法(Get或Post)
3.InsertionMode 設定通過Ajax輔助方法取回資料時要如何將資料插入到目標DOM元素(即UpdateTargetId)中,有三種方法:
InsertionMode.Replace 替代UpdateTargetId屬性指定的內容
InsertionMode.InsertBefore 在UpdateTargetId屬性之前插入
InsertionMode.InsertAfter 在UpdateTargetId屬性之後插入
4.LoadingElementId 在讀取尚未完成時所顯示的文字
5.OnBegin 設定開始時要呼叫的javascript函式名稱
6.OnComplete 設定結束時要呼叫的javascript函式名稱
7.OnFailure 設定失敗時要呼叫的javascript函式名稱
8.OnSuccess 設定成功時要呼叫的javascript函式名稱
9.UpdateTargetId 設定返回值要顯示在哪個Id上
10.Url 設定請求的網址