【问题标题】:mvc create my own html helper, how can i access httpcontext?mvc 创建我自己的 html 助手,我如何访问 httpcontext?
【发布时间】:2013-11-20 20:00:16
【问题描述】:

关于创建自定义 html 帮助器,我遇到了两条建议:要么扩展现有的帮助器,要么编写自己的类。

我更愿意将我的自定义代码分开,为一个体面的应用程序扩展帮助器似乎有点草率。

但是我在扩展中看到的好处是'This HtmlHelper helper'作为参数传递,通过它我可以获得ViewContext.HtmlContext。

我的问题是,我怎样才能滚动我自己的帮助类并且仍然有 ViewContext.HtmlContext 可供我使用?

谢谢!

编辑: 我要做的是创建“MyHelperClass”,它将一些自定义对象呈现为 html。我认为没有必要“扩展”一个 Html 助手,因为我没有使用它提供给我的任何东西。正如您所展示的,我目前必须扩展 htmlhelper 的唯一原因是访问 httpcontext。但我的问题是,如何在我自己的类中访问 httpcontext,而不扩展现有的帮助程序。谢谢

【问题讨论】:

  • 无法解释的反对票真的很有用

标签: asp.net-mvc


【解决方案1】:
public static class HtmlHelperExtensions
{
    public static HttpContextBase GetContext(this HtmlHelper htmlHelper)
    {
        return htmlHelper.ViewContext.HttpContext;
    }
}

【讨论】:

  • 'cannot convert type system.web.httpcontextbase to system.web.httpcontext' ..这个方法应该返回httpcontextbase吗?
  • 是的,HttpContextBase,我很抱歉。我怀疑你真的会使用这种方法。它更多的是在扩展方法中使用静态类和方法访问 HtmlHelper.ViewContext.HttpContext 对象的示例。项目通常在静态 HtmlHelperExtensions 类中有许多方法。 (但是,我一般会将我对扩展方法的厌恶保留给另一个线程)。
  • 嗨,虽然此代码将在扩展现有 html 帮助器的类中工作,但它并不能完全回答我的问题。我要做的是创建“MyHelperClass”,它将一些自定义对象呈现为 html。我认为没有必要“扩展”一个 Html 助手,因为我没有使用它提供给我的任何东西。正如您所展示的,我目前必须扩展 htmlhelper 的唯一原因是访问 httpcontext。但我的问题是,如何在我自己的类中访问 httpcontext,而不扩展现有的帮助程序。谢谢
  • 我想我很难理解你的问题。如果你只需要你的 httpcontext,为什么不使用 System.Web.HttpContext.Current 呢?
【解决方案2】:

您还可以使用:System.Web.HttpContext.Current.Request.RequestContext

【讨论】:

  • 这让我找到了我正在寻找的答案。我有一个 htmlHelper,我正在尝试处理该请求。解决方案? helper.ViewContext.HttpContext.Request - 谢谢
猜你喜欢
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
相关资源
最近更新 更多