里面的 Actionlink 实现System.Web.Mvc.Html.LinkExtensions (System.Web.Mvc, Version=4.0.0.0)
如下...
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes)
{
if (string.IsNullOrEmpty(linkText))
throw new ArgumentException(MvcResources.Common_NullOrEmpty, "linkText");
else
return MvcHtmlString.Create(HtmlHelper.GenerateLink(htmlHelper.ViewContext.RequestContext, htmlHelper.RouteCollection, linkText, (string) null, actionName, controllerName, routeValues, htmlAttributes));
}
有许多具有不同参数组合的实用程序重载。
所以你应该能够添加一个扩展方法来轻松生成你的链接(未经测试)......
public static MvcHtmlString InternalActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes)
{
if (string.IsNullOrEmpty(linkText))
throw new ArgumentException(MvcResources.Common_NullOrEmpty, "linkText");
else
RouteValueDictionary.Values.Add("id", htmlHelper.ViewContext.RequestContext.RouteData)
return MvcHtmlString.Create(HtmlHelper.GenerateLink(htmlHelper.ViewContext.RequestContext, htmlHelper.RouteCollection, linkText, (string) null, actionName, controllerName, routeValues, htmlAttributes));
}
public static MvcHtmlString InternalActionLink(this HtmlHelper htmlHelper, string linkText, string actionName)
{
return this.InternalActionLink(htmlHelper, linkText, actionName, (string) null, new RouteValueDictionary(), (IDictionary<string, object>) new RouteValueDictionary());
}
显然,您需要添加一些简单的包装器重载来提供您想要的确切功能。
然后使用html.InternalActionLink("Title", "Action")
它,它会在生成 Url 时自动将正确的 Id 注入到路由字典中。
顺便说一句,框架提供了以下ActionLink()
重载——你实现的越多,你就越灵活……
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes)
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName)
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes)
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, RouteValueDictionary routeValues)
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues, object htmlAttributes)
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues)
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName)