如何在htmlhelper扩展方法MVC4中使用ActionLink()

时间:2013-11-13 16:22:39

标签: c# asp.net-mvc asp.net-mvc-4

我在HtmlHelper中有一个需要生成链接的方法

private static string IntentarGenerarLink<T>(HtmlHelper helper, T d, TableHeaderDetails h, string value)
{
  if (h.Link != null)
  {
    var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
    var url = urlHelper.Action(h.Link.Controller, h.Link.Action, new { id = d.GetType().GetProperty(h.Link.ID).GetValue(d,null) });
  }
  return value;
}

urlHelper.Action正在返回一个相对路径,我需要一个完整的URL,为了解决这个问题,我尝试使用ActionLink(),但我无法从我的HtmlHelper扩展方法中访问它。

我需要更改什么才能使用ActionLink方法?

2 个答案:

答案 0 :(得分:2)

确保您使用以下using语句:

using System.Web.Mvc;
using System.Web.Mvc.Html;

答案 1 :(得分:0)

您应该能够通过使用urlHelper.Action的另一个重载来获取完整的URL - 您也可以在其中传递方案。通过传递方案,您应该返回完整的URL,而不是相对URL。

var url = urlHelper.Action(h.Link.Controller, h.Link.Action, 
    new { id = d.GetType().GetProperty(h.Link.ID).GetValue(d,null) }, 
    helper.ViewContext.RequestContext.HttpContext.Request.Url.Scheme);