嗨,我正在尝试在 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/