1

我在 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 方法?

4

2 回答 2

2

确保您使用以下两个using语句:

using System.Web.Mvc;
using System.Web.Mvc.Html;
于 2013-11-13T16:47:51.633 回答
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);
于 2013-11-13T16:58:07.883 回答