【问题标题】:In ASP.NET MVC how can I use the Razor @Url.Content() helper from C# code?在 ASP.NET MVC 中,如何使用来自 C# 代码的 Razor @Url.Content() 助手?
【发布时间】:2008-12-09 06:13:20
【问题描述】:

我正在尝试编写一个输出图像标签的 html 辅助扩展。 我需要访问(在 C# 代码中)类似 Razor 的 @Url.Content() 帮助程序来获取当前上下文的正确 URL。 如何做到这一点?

【问题讨论】:

标签: asp.net asp.net-mvc


【解决方案1】:

使用以下内容在代码中模仿 Url.Content。

VirtualPathUtility.ToAbsolute("~/url/");

【讨论】:

  • 这很酷,有没有 Url.Content() 提供与此不同的结果的场景/边缘情况?
  • 如果你的url有查询字符串参数,VirtualPathUtility.ToAbsolute()会报错,Url.Content不会。
【解决方案2】:

您可以通过传入适当的ViewContext 创建自己的UrlHelper 实例。例如,要从图像助手执行此操作:

public static string CustomImage(this HtmlHelper html)
{
    var Url = new UrlHelper(html.ViewContext.RequestContext);
}

此时您可以调用Url.Content() 或任何其他UrlHelper 方法。

【讨论】:

  • 在 RC1 中应该是“var url = new UrlHelper(html.ViewContext.RequestContext);”
【解决方案3】:

大概是这样的吧?

public static string MyHelper(this HtmlHelper h)
{
      string url = h.ViewContext.HttpContext.Request.Url.AbsoluteUri;
}

【讨论】:

    【解决方案4】:

    是的,你可以。

    您可以从控制器调用:

    this.Url.Content("~/Somerelativepath?somethingelse=true");

    【讨论】:

      【解决方案5】:

      是的,使用此代码将Url.Content 添加到您的代码中:

      var img_btn_edit = VirtualPathUtility.ToAbsolute("~/Content/images/pencil.png");
      

      【讨论】:

        【解决方案6】:

        您可以访问 Request 对象,因此 URL 如下所示:

        string fullUrl = HttpContext.Current.Request.Url.AbsoluteUri;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多