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

时间:2011-03-15 19:22:38

标签: asp.net-mvc-3 razor

我有自定义类,使用此处概述的方法扩展我用作所有Razor视图基础的WebViewPage: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吗?

2 个答案:

答案 0 :(得分:12)

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

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

My Views / Web.config有:

<system.web.webPages.razor>
    <pages pageBaseType="ClassLibrary1.MyBasePage">
</system.web.webPages.razor>

我的网站项目引用了ClassLibrary1项目。

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

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

        public MyBasePage()
        {
            this.DannyName = "Danny Tuppeny";
        }
    }
}

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

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

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

答案 1 :(得分:2)

我发现重新启动Cassini / IIS Express / IIS Web服务器就足够了。