ASP.NET MVC3 Razor - 在将视图放置在备用位置时丢失了智能感知?

时间:2011-02-06 01:00:14

标签: asp.net-mvc-3 razor directory viewengine

VS2010 Ultimate,ASP.NET MVC 3 w / Razor。

我在我的MVC3应用程序中创建了一个自定义视图引擎,允许嵌套区域,如此

~/areas/admin
    /marketing
        /views
            index       
        /controllers
            marketingController
        /email
            /views
                index
                ...
            /controllers
                emailController
        /templates
            /views
                index
                edit
                ...                  
            /controllers
                templatesControler

这一切都很有效,除了我似乎在不在标准~/areas/area_name/views/myview.cshtml位置的视图中丢失了智能感知。

有什么建议吗?

更新

只是在百灵鸟上,我添加了@inherits声明

@inherits System.Web.Mvc.WebViewPage<Namespace.Models.Class>

和intellisense开始工作。然后我删除了该语句,继续工作。

项目文件中是否有某些设置或告诉Visual Studio应用于打开文件的哪种智能感知,而不是文件扩展名? (如果扩展是所有使用的,我希望它更加一致)。

更新2

虽然在我的每个视图文件夹中添加web.config可以很好地解决问题,但是将razor配置放在root web.config中却没有。

将所需的system.web.webPages.razor部分添加到~/web.config后,

  1. 我将一个Razor .cshtml视图文件添加到我的一个嵌套视图文件夹中。
  2. 智能感知工作。
  3. 我重命名该文件(保留.cshtml扩展名)
  4. Intellesense和语法突出显示停止工作。
  5. 关闭重命名的文件并重新打开 - 一切都重新开始工作。
  6. 或者,我没有关闭并重新打开文件,而是将其重命名为原始名称,然后重新开始工作。
  7. 这感觉就像一个VS错误 - 重命名一个文件(但保留适当的扩展名)不应该,据我所知,导致这种行为。我将继续在我的每个视图文件夹中放置单独的web.config,因为它可以解决问题,但是当我希望这些设置像其他网络一样通过解决方案树传播时,必须使解决方案变得杂乱起来很烦人。 .config设置。

    值得注意的是,无论Razor配置位于何处,无论intellesense是否正常工作,该网站都能继续正常运行。

    解决

    我被Powers认为(非常快),这是一个已知的问题,在MVC3 RTM和VS2010 SP1中得到纠正。更新我的MVC3安装并添加SP1后问题消失了。

1 个答案:

答案 0 :(得分:7)

Views文件夹包含Web.config file that sets default options for Razor views,包括默认的基本类型和命名空间,以及启用@model指令的自定义主机。

其他文件夹中的Razor视图不会继承此配置 您需要将此配置添加到文件夹中的Web.config

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
        </namespaces>
    </pages>
</system.web.webPages.razor>
相关问题