8

App_Code 文件夹中的简单 Razor 助手:

MyHelper.cshtml

@using System.Web.Mvc

@helper SimpleHelper(string inputFor){
    <span>@inputFor</span>
    Html.RenderPartial("Partial");
}

视图/共享文件夹中的简单视图:

我的视图.cshtml

<html>
    <head

    </head>
    <body>
        @WFRazorHelper.SimpleHelper("test")
    </body>
</html>

视图/共享文件夹中的简单局部视图:

部分.cshtml

<h1>Me is Partial</h1>

编译器抛出错误:

CS1061: 'System.Web.WebPages.Html.HtmlHelper' enthält keine Definition für 'RenderPartial', und es konnte keine Erweiterungsmethode 'RenderPartial' gefunden werden, die ein erstes Argument vom Typ 'System.Web.WebPages.Html.HtmlHelper' akzeptiert (Fehlt eine Using-Direktive oder ein Assemblyverweis?)。

但是,如果我在 MyView.cshtml 中调用 Html.RenderPartial 一切正常。

我想我必须更改一些 web.configs,因为 MyView 中的 HtmlHelper 取自 System.Web.Mvc,而 MyHelper.cshtml 中的 HtmlHelper 取自 System.Web.WebPages。

我该如何解决?

4

1 回答 1

16

Html是 WebPage 的一个属性,因此您只能在视图内部访问它。App_Code 文件夹中的自定义助手无权访问它。

所以HtmlHelper如果你需要在里面使用它,你需要传递 as 参数:

@using System.Web.Mvc.Html

@helper SimpleHelper(System.Web.Mvc.HtmlHelper html, string inputFor)
{
    <span>@inputFor</span>
    html.RenderPartial("Partial");
}

然后通过从视图中传递 HtmlHelper 实例来调用自定义助手:

<html>
    <head>

    </head>
    <body>
        @WFRazorHelper.SimpleHelper(Html, "test")
    </body>
</html>
于 2012-09-20T10:37:16.137 回答