在MVC部分页面中无法访问Html扩展方法

时间:2012-12-27 09:16:24

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

您好我正在尝试在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>
}

2 个答案:

答案 0 :(得分: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#代码。另一个好处是它们可以进行单元测试。

答案 1 :(得分:1)

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