razor - 为什么我不能在 App_Code 文件夹中的 Razor 助手 View 文件中使用 Html.RenderPartial?

标签 razor html-helper renderpartial app-code

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

我的助手.cshtml

@using System.Web.Mvc

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

View /共享文件夹中的简单 View :

我的 View .cshtml
<html>
    <head

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

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

部分.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。

我该如何解决?

最佳答案

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

所以你需要通过HtmlHelper如果您需要在内部使用它作为参数:

@using System.Web.Mvc.Html

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

然后通过从 View 中传递 HtmlHelper 实例来调用自定义助手:
<html>
    <head>

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

关于razor - 为什么我不能在 App_Code 文件夹中的 Razor 助手 View 文件中使用 Html.RenderPartial?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12510840/

相关文章:

c# - 有没有办法在 <img> 标签上添加 @url.Action

ajax - 没有页面刷新,Rails 3 ajax 更新部分不起作用

jquery - 从 jquery 和 haml 渲染部分内容

c# - 更改 "for"中的属性 "Html.LabelFor"

c# - MVC4/我想要的是局部 View 吗?

jquery - 在 Ajax.BeginForm 中发送 javascript 数组

c# - 使用 razor @Html.textboxfor 将字符串表示为货币或小数

razor - Nancy.ViewEngines.Razor v0.12.1.0 是否支持布局 View 和 _ViewStart?

.net - 为什么 ASP.NET MVC 3 中的 IntelliSense 中没有 @Html.Button?

c# - 如何在我的 ASP.NET MVC 编辑页面中绑定(bind)多个下拉菜单?