ActionLink
ActionLink主要是一个连接,它定义了10个重载的扩展方法供开发者使用。
Html.ActionLink("LinkName","actionName")这段代码对应的Html如下<a href="/Home/actionName">LinkName</a>在上面的代码中设置了一个“LinkName”的链接,该链接指向了"/Home/actionName"。
让我们看看ActionLink怎么具体实现的吧,代码如下:
public static string ActionLink(this AjaxHelper ajaxHelper, string linkText,
string actionName, string controllerName, RouteValueDictionary routeValues,
AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes) {
if (String.IsNullOrEmpty(linkText)) {
throw new ArgumentException(MvcResources.Common_NullOrEmpty, "linkText");
}
string targetUrl = UrlHelper.GenerateUrl(null, actionName, controllerName,
routeValues, ajaxHelper.RouteCollection,
ajaxHelper.ViewContext.RequestContext, true /* includeImplicitMvcValues */);
return GenerateLink(linkText, targetUrl, GetAjaxOptions(ajaxOptions), htmlAttributes);
}
根据上述代码可以看出ActionLink其实根据Action、Controller、linkText信息,通过GenerateLink生成了我们需要的HTML代码的,
影响GenerateLink的还有Route。