不同命名空间中的Asp.Net MVC 3自定义WebViewPage打破了IntelliSense

Bra*_*ani 9 razor asp.net-mvc-3

我有自定义类,使用此处概述的方法扩展WebViewPage,我将其用作所有Razor视图的基础:http://haacked.com/archive/2011/02/21/changing-base-type-of-a- razor-view.aspx.一切正常,除非我将它移动到与视图命名空间不同的命名空间,因此IntelliSense停止工作(是的,我在system.web.webPages.razor部分的名称空间部分中包含了自定义WebViewPage的命名空间. views文件夹中的web.config).有没有解决的办法?

我最终想要做的是将所有视图移动到图形设计者可以访问的另一个项目中,但我不希望该项目中的自定义WebViewPage类.这可能不会破坏IntelliSense吗?

Dan*_*eny 12

这听起来很傻,但重建并重启Visual Studio几次:-D

我只是重现了这个问题,并尝试了一切使其工作(包括更改pageBaseType除了一个).我重新启动了VS,它开始工作了.删除了部件,它在几次清洁/重建/重启循环后仍然有效.

我的Views/Web.config有这个:

<system.web.webPages.razor>
    <pages pageBaseType="ClassLibrary1.MyBasePage">
</system.web.webPages.razor>
Run Code Online (Sandbox Code Playgroud)

我的Web项目引用了ClassLibrary1项目.

我的自定义类(在ClassLibrary1中)如下所示:

namespace ClassLibrary1
{
    public abstract class MyBasePage<T> : WebViewPage<T>
    {
        public string DannyName { get; set; }

        public MyBasePage()
        {
            this.DannyName = "Danny Tuppeny";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当在Web项目Views/Home/Index.cshtml中,当我输入"@D"时,我得到"@DannyName"的智能感知.

我试过的一些可能产生影响的东西,但是在我删除之后它仍然有效:

  • 将pageBaseType添加到该部分的Views/web.config中
  • 添加了该类的非泛型版本:
    • 公共抽象类MyBasePage:MyBasePage {}