【问题标题】:ASP.NET MVC 2 - Views in separate assembly - No intellisenseASP.NET MVC 2 - 单独程序集中的视图 - 没有智能感知
【发布时间】:2010-02-17 00:11:40
【问题描述】:

我已经搜索过 Stackoverflow 上的主题,但这个问题到目前为止还没有得到解答。

我的解决方案中有两个项目:a) MVC 应用程序 b) 类库。

类库充当插件,因此它包含视图。主要问题是我在类库中包含的类的视图标记中没有智能感知(与视图相同的程序集)。

一开始我什至不会写 。我通过以下部分将 Web.config 文件添加到类库中解决了这个问题:

<configuration>
<system.web>
    <compilation debug="true">
        <assemblies>
            <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>
    </compilation>
</system.web>

现在它可以识别视图标记中的 Html.RenderAction 等。但是我不知道如何(通过智能感知)访问与视图相同的程序集中包含的类:(

亲切的问候, 雅库布

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-2


    【解决方案1】:

    配置中有一个单独的命名空间列表,您需要在其中包含自定义命名空间。下面的示例演示了在简化的 web.config 中添加命名空间。如果这仍然不起作用,请确保您的项目和 webconfig 具有对其他程序集的正确引用。

    <configuration>
        <pages>
            <namespaces>
                <add namespace="System.Web.Mvc"/>
                <add namespace="System.Web.Mvc.Ajax"/>
                <add namespace="System.Web.Mvc.Html"/>
                <add namespace="System.Web.Routing"/>
                <add namespace="System.Linq"/>
                <add namespace="System.Collections.Generic"/>
                <add namespace="Blog.Models"/> <!-- These are my custom namepaces -->
                <add namespace="Blog.Views"/>
            </namespaces>
        </pages>
    </configuration>
    

    【讨论】:

    • 感谢 smaclell 的回答。我已经尝试过了,但是右键单击类名不起作用(那里没有解析命名空间)。
    • 不用担心。我没有亲自尝试过您在做什么,但我绝对可以看到您为什么要拆分您的程序集。有趣的是,即使在 web.config 中排列了程序集和命名空间,您仍然看不到这些类。祝你好运。
    【解决方案2】:

    与 Spark 视图引擎相同的问题,请参阅 their documentation。基本上,他们说“制作一个 Web 应用程序项目”,并以其他方式将其视为类库。在 Spark 中为我工作过,也许它也适用于你的情况?

    【讨论】:

    • 嗨,Erik,这是一个选项,但我想让它在类库项目中工作:)
    • AFAIK Web 应用项目和类库之间唯一真正的区别是项目类型的 GUID(Visual Studio 使用它来确定要加载的上下文)。如果我错了,请纠正我,但不应该有任何负面影响。如果有,我还没有遇到过;-)
    【解决方案3】:

    开箱即用,MVC 不支持多个项目。查看我之前的问题了解更多详情。

    【讨论】:

    • 我知道,但我使用 MEF 进行了管理,并且运行良好。唯一的问题是类库程序集中我自己的类的智能感知。我可以在没有智能感知的情况下做到这一点,但这并不好。
    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    相关资源
    最近更新 更多