当前位置:  开发笔记 > 后端 > 正文

ASP.NET MVC View可以使用来自不同项目的模型吗?

如何解决《ASP.NETMVCView可以使用来自不同项目的模型吗?》经验,为你挑选了2个好方法。

我在WPF项目中有一个名为Node的ADO.NET Entity Framework类.我想在同一解决方案中的不同ASP.NET MVC项目中使用它.

我的节点控制器:

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:'Title'不是'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视图?

更新1:

我已尝试在Display.aspx页面上导入命名空间,但没有

<%@ Import Namespace="WpfApplication1" %>

要么

<%@ Import Namespace="SolutionName.WpfApplication1" %>

要么

<%@ Import Namespace="SolutionName.WpfApplication1.Model1Entities" %>

防止错误.

更新2:

我已经尝试将命名空间添加到我的Views/Web.config文件中,但是没有


也不


防止错误.

更新3:

自从添加命名空间后,我现在得到这个警告:

Imports的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)" %>

我不再看警告了.

但我仍然得到运行时错误.



1> Peter J..:

仔细检查您的Views/Web.config是否具有引用项目的命名空间:


  
    
      
    
  

更新:

我没有任何WPF应用程序来测试它......我以为你试图使用"类库"项目.这肯定会奏效.是否有可能稍微重构您的应用程序以将"模型"拉出到他们自己的项目中?这样您就可以将其编译为类库.

更新2:

奇怪的是,这几乎就像你的页面没有从System.Web.Mvc正确继承.确保您的Views/Web.config看起来像这样:




  
    
      
    
    
      
        
      
      
        
      
    

  

  
    
    
      
      
    
  

更新3:运行时错误看起来不是MVC项目.



2> Rex M..:

你绝对可以!只需确保在视图中包含正确的命名空间:

<%@ Import Namespace="MyEntityNamespace" %>

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有