2

您好我正在尝试在 MVC 部分页面中创建一个声明性 Html 帮助器方法,一切正常。但是当我想使用内置的 Html 扩展方法时,我发现没有扩展方法。我还检查了我的视图的 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>
}
4

2 回答 2

2

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

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

当您想从某个视图调用此助手时,您需要传递参考:

@GetVoteList(Html, ...)

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

@Html.GetVoteList(...)

优点是您不再与 Razor 绑定。扩展方法与视图引擎无关,并且由于它们是 C# 代码,因此可以减少向其他视图引擎的过渡。另一个好处是它们可以进行单元测试。

于 2012-12-27T09:26:07.623 回答
1

Views 文件夹下有一个 web.config。你也可以修改这个配置吗?

于 2012-12-27T09:20:03.173 回答