Razor&中的自定义HTML助手HTML扩展方法

时间:2011-04-07 16:13:55

标签: asp.net-mvc razor html-helper

关于在@helper(razor)方法中不可能使用HtmlHelper扩展方法(如ActionLink),这里和任何地方都有很多问题。 现在,在我的项目中,我解决了将当前页面(System.Web.Mvc.WebViewPage页面)作为额外参数传递给@helper的问题,如

@helper HelperFunction(SampleParameter sp, System.Web.Mvc.WebViewPage page)

并使用它(简单地),如

{
    ...
    @page.Html.ActionLink("Title", "Action")
    ...
}

我想知道它是否太愚蠢:-),以及为什么。当然,最好直接访问调用@helper的页面的当前HtmlHelper,但无论如何......如果这是一个很好的解决方案......

安德烈

1 个答案:

答案 0 :(得分:1)

我很好奇为什么这不起作用,所以我看了一下。

当您将代码放入App_Code文件夹时,它会继承自System.Web.WebPages.HelperPage,虽然它具有Html属性,但它是System.Web.WebPages.HtmlHelper而不是System.Web.Mc.HtmlHelper,这是为什么你找不到像ActionLink这样的东西:(

我快速浏览了一下found this answer from Andrew Nurse

  

奥马尔在这里得到了正确的答案,但是   我想添加一些东西(做的感觉   随意标记奥马尔的回应   回答)。

     

我们在v1和v中意识到了这一点   无法得到一个很好的解决方案   产品,但David Ebbo(建筑师   在ASP.Net团队上)发布了一个样本   一个Visual Studio代码生成器   基本上是第一次探索   我们正在关注的那种想法   使这项工作正常:   http://blogs.msdn.com/b/davidebb/archive/2010/10/27/turn-your-razor-helpers-into-reusable-libraries.aspx

     

尝试一下,看看你的想法!   让大卫知道你是否有评论   张贴在他的博客上。

不幸的是,看起来你甚至无法将帮助器放在App_Code之外的Layout类或_ViewStart中:(