該語法會生成一個a標簽,點擊a標簽會執行一個Ajax請求。
有12個方法重載,下面詳解方法中的各項參數:
參數一:linkText
string類型
說明:鏈接顯示的文字內容
參數二:actionName
string類型
說明:指定請求地址的Action名稱
參數三:ajaxOptions
class類型
說明:配置Ajax的一些選項
舉例:new AjaxOptions { HttpMethod = "POST", LoadingElementId = "searching", UpdateTargetId = "postContent" }
相關屬性詳解:
Confirm |
string |
在請求之前會彈出一個提示框,是否確認提交 |
HttpMethod |
string |
設置請求類型 Get Post |
UpdateTargetId |
String |
標明html中一元素的id,把請求返回的數據/元素更新到該元素中 |
InsertionMode |
enum |
把請求結果以何種方式更新到Dom元素中 ①Replace ②InsertBefore ③InsertAfter 不設置的情況下,默認是Replace,只有在UpdateTargetId被設置后才有效 |
LoadingElementId |
string |
標明html中一元素的id,在請求過程中,該元素會顯示出來,請求結束后又隱藏 |
LoadingElementDuration |
Int |
控制Loading動畫在顯示/隱藏時的動畫持續時間,單位為毫秒; 默認情況下,動畫將淡入淡出;這個時間即淡入淡出的時間(但經測試無效!!!) |
OnBegin |
string |
標明js中一function的名稱,在Ajax請求發送前,執行該方法,對應JQuery的beforeSend |
OnComplete |
String |
標明js中一function的名稱,在請求成功時,執行該方法,對應JQuery的complete |
OnFailure |
String |
標明js中一function的名稱,在請求失敗時,執行該方法,對應JQuery的error |
OnSuccess |
String |
標明js中一function的名稱,無論請求成功與否,都在請求完成時,執行該方法,對應JQuery的success |
Url |
String |
請求的地址 |
AllowCache |
Bool |
是否使用緩存 |
在BeginForm的11個重載方法中,有一方法中只有AjaxOptions一個參數,如果不指定Url,則生成的form表單的action屬性沒有值,就默認把數據提交到當前頁,否則就以Url為請求地址,其他重載方法中都需要指定actionName及controllerName(可選)。
參數四:routeValues
object、RouteValueDictionary類型
說明:將傳入到Controller中方法的參數
支持上述兩種數據類型:
object類型可以在使用時直接以匿名類方式聲明,使用非常方便
舉例:
new { id = 1, type = 1 }
RouteValueDictionary類型實現了IDictionary<string, object>接口,因此在使用時可以用鍵值對方式聲明
舉例:
new RouteValueDictionary{ {"id", 1}, {"type", 1} }
生成的路徑:/Home/Index/1?type=1
因為“id”是在路由規則中配置的名稱,因此顯示在路由規則對應的位置,“type”則在問號后面
參數五:htmlAttributes
object、IDictionary<string, object>類型
說明:html屬性,生成form表單時,會把鍵值對添加到form表單的屬性中;
支持上述兩種數據類型:
object類型可以在使用時直接以匿名類方式聲明,使用非常方便
舉例:
new{id = "frm", @class = "cls" } 由於class是C#中的關鍵字,因此需要在前面加@符號
IDictionary<string, object>類型使用靈活,可以在一個地方聲明,多個地方調用,或修改后使用
舉例:
Dictionary<string, object> htmlAttr = new Dictionary<string, object>
{
{"id", "frm"},
{"class", "cls"}
};
生成的代碼:<form action="/Home/Index/1?type=1" class="cls" data-ajax="true" id="frm" method="post">
參數六:controllerName
string類型
說明:指定請求地址的Controller名稱
參數七:protocol
string類型
說明:指定鏈接的協議類型,比如http、https
參數八:hostName
string類型
說明:指定鏈接的主機地址,可以有域名+端口號,比如ayilaile.com:80
參數九:fragment
string類型
說明:指定鏈接中的錨點名稱
七、八、九三個參數的重載方法很少使用
示例:
@Ajax.ActionLink("ActionLink", "Index", "Home", "https", "www.ayilaile.com:90", "title", new { id = 1, type = 1 }, new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "detailsID", InsertionMode = InsertionMode.Replace }, new{ id = "testid"})
生成的鏈接為:https://www.ayilaile.com:90/Home/Index/1?type=1#title