c# - MVC 部分页面中无法访问 Html 扩展方法

标签 c# .net asp.net-mvc asp.net-mvc-partialview

嗨,我正在尝试在 MVC 部分页面内创建一个声明性 Html 帮助器方法,一切正常。但是当我想使用内置的 Html 扩展方法时,我发现没有扩展方法。我还检查了 View 的 webconfig 文件以添加 System.Web.Mvc.Html 命名空间。一切正常,但我不知道为什么它不起作用。

任何建议都会有帮助。

编辑:这是我的代码:

@using WebVoter.ViewModel
@using System.Web.Mvc.Html

@helper GetVoteList(IList<VoteQuestionViewModel> voteQuestionList)
{

    <div class="head-panel">
        @*For example ActionLink is not accessible here*@
        @Html.ActionLink(....);

    </div>
}

最佳答案

在 Razor 助手内部,您没有对 HtmlHelper 的引用。您需要将其作为调用代码中的参数传递:

@helper GetVoteList(HtmlHelper html, IList<VoteQuestionViewModel> voteQuestionList)
{
    <div class="head-panel">
        @html.ActionLink(....)
    </div>
}

当你想从某个 View 调用这个助手时,你需要传递引用:

@GetVoteList(Html, ...)

就我个人而言,我一直更喜欢向 HtmlHelper 类编写扩展方法,而不是使用那些内联 Razor 帮助程序。然后它们将被用作标准助手:

@Html.GetVoteList(...)

优点是您不再受 Razor 的束缚。扩展方法与 View 引擎无关,并且可以减少向其他 View 引擎的转换,因为它们是 C# 代码。另一个好处是它们可以进行单元测试。

关于c# - MVC 部分页面中无法访问 Html 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14052182/

相关文章:

c# - CSS:第一个选择器

c# - DataContext.ExecuteQuery<TEntity> 和 Null 值

c# - 使用 ReSharper 将 Foo 和 Foo<T> 移动到匹配的文件

.net - 如何获取异步方法的返回值?

.net - 使用 ColdFusion 中的列表调用 .NET 方法时未找到方法

c# - ASP.NET MVC 在授权后保留发布数据

c# - 创建用于数据库的哈希码(即不使用 GetHashCode)

c# - 如何查看在asp.net应用程序中引发的原始错误

c# - 在 .net 和 c# 中动态调整图像大小

c# - ASP.NET MVC 路由表中没有路由与提供的值匹配