У меня есть класс ADO.NET Entity Framework с именем Node в проекте WPF. Я хочу использовать его в другом проекте ASP.NET MVC в том же решении.
Контроллер My Node:
Public Class NodeController
Inherits System.Web.Mvc.Controller
Function Display(ByVal id As Guid) As ActionResult
Dim db As New WpfApplication1.Model1Entities
Dim m As WpfApplication1.Node = (From n In db.Node _
Where n.Id = id _
Select n).First
Return View(m)
End Function
End Class
Когда я запускаю проект и пытаюсь перейти к http://.../Node/Display/[a valid ID]
Я получаю сообщение об ошибке:
Ошибка сервера в приложении '/'.
Ошибка компиляции
Сообщение об ошибке компилятора: BC30456:
«Заголовок» не является членом
'ASP.views_node_display_aspx'.
Ошибка источника:
Строка 1: <% @ Page Title = "" Language = "VB" MasterPageFile = "~ / Views / Shared / Site.Master" Inherits = "System.Web.Mvc.ViewPage (Of WpfApplication1.Node)"% >
Исходный файл:
C: ... \ MvcApplication1 \ Views \ Node \ Display.aspx
Я читал, что ошибка может быть связана с конфликтом имен классов за . Но я не думаю, что это так.
Можно ли использовать модель из другого проекта для создания строго типизированного ASP.NET MVC View?
Обновление 1:
Я пытался импортировать пространство имен на моей странице Display.aspx, но ни один из
<%@ Import Namespace="WpfApplication1" %>
или
<%@ Import Namespace="SolutionName.WpfApplication1" %>
или
<%@ Import Namespace="SolutionName.WpfApplication1.Model1Entities" %>
предотвратить ошибку.
Обновление 2:
Я пытался добавить пространство имен в мой файл Views / Web.config, но не
<add namespace="SolutionName.WpfApplication1" />
ни
<add namespace="SolutionName.WpfApplication1.Model1Entities" />
предотвратить ошибку.
Обновление 3:
После добавления пространства имен я теперь получаю это предупреждение:
Пространство имен или тип, указанный в
Импортирует «SolutionName.WpfApplication1»
не содержит публичного участника или
не может быть найден. Убедитесь, что
пространство имен или тип определяется и
содержит хотя бы одного публичного участника.
Убедитесь, что имя импортируемого элемента
не использует псевдонимы.
Это ключ?
Обновление 4:
Я переместил модель из моего WpfApplication1 в новую ClassLibrary1.
Я очистил свой контроллер.
Imports ClassLibrary1
Public Class NodeController
Inherits System.Web.Mvc.Controller
Function Display(ByVal id As Guid) As ActionResult
Dim db As New Model1Entities
Dim m As Node = (From n In db.Node _
Where n.Id = id _
Select n).First
Return View(m)
End Function
End Class
Я очистил свой вид.
<%@ Import Namespace="ClassLibrary1" %>
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of Node)" %>
Я больше не вижу предупреждение.
Но я все еще получаю ошибку времени выполнения.