我创建了一个像这样的视图扩展名:
namespace MyProject
{
public static class PageExtensions
{
public static HtmlString MyExt(this WebViewPage page)
{
所以我现在可以输入Razor视图:
@this.MyExt()
请注意我的观点都包含通过Web.config声明它的命名空间:
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="MyProject" />
一切都很好。现在我想写一个@helper
函数并在那里使用我的扩展名:
@helper MyHelper() {
var page = (WebViewPage) CurrentPage;
<div>
@page.MyExt()
</div>
}
但扩展程序在那里不可用。我得到的错误是:
编译器错误消息:CS1061:'System.Web.Mvc.WebViewPage'没有 包含'MyExt'的定义,没有扩展方法 'MyExt'接受第一个类型的参数 可以找到'System.Web.Mvc.WebViewPage'(你错过了使用 指令或程序集引用?)
我错过了什么?
答案 0 :(得分:1)
确保您修改的web.config是&#34; /Views/Web.Config"
答案 1 :(得分:1)
Visual Studio需要重新编译项目才能识别您添加到视图中的帮助程序,我怀疑这是您的问题。
答案 2 :(得分:1)
问题是名称空间。删除封闭PageExtensions类的namespace指令修复它。为什么呢?我不确定