ASP.NET MVC 2 - Представления в отдельной сборке - Нет смысла - PullRequest
2 голосов
/ 17 февраля 2010

Я искал темы в Stackoverflow, но на этот вопрос пока нет ответа.

В моем решении два проекта: a) Приложение MVC b) Библиотека классов .

Библиотека классов действует как плагин, поэтому она содержит представления. Основная проблема заключается в том, что у меня нет intellisense в разметке представления для моих классов, содержащихся в библиотеке классов (той же сборке, что и представления).

В начале я даже не мог написать <% = Html.RenderAction ...%>. Я решил это, добавив файл 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 и т. Д. В разметке представления. Однако я не знаю, как получить доступ (с intellisense) к моим классам, содержащимся в той же сборке, что и представления: (

С уважением, Якуб

Ответы [ 3 ]

2 голосов
/ 17 февраля 2010

В конфиге есть отдельный список пространств имен, в который необходимо включить ваши пользовательские пространства имен. В приведенном ниже примере в упрощенном файле 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>
0 голосов
/ 17 февраля 2010

Представление Spark - та же проблема, см. их документацию . По сути, они говорят «создайте проект веб-приложения» и относитесь к нему как к библиотеке классов любым другим способом. Сработал для меня в Spark, может, это сработает и в вашей ситуации?

0 голосов
/ 17 февраля 2010

Из коробки MVC не поддерживает несколько проектов. Проверьте мои предыдущие вопросы для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...