您好我正在尝试在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>
}
答案 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。你也可以修改这个配置吗?