【发布时间】:2009-06-01 14:00:02
【问题描述】:
是否有涵盖应该定义 ASP.NET MVC 模型的地方的最佳实践?
一个新的 ASP.NET MVC 项目有一个漂亮整洁的 Models 文件夹供它们进入,但在生产环境中它们可以来自其他地方:
- 第三方类库
- WCF 服务
强类型视图使用在这样的位置定义的类是否可以接受?
【问题讨论】:
标签: asp.net-mvc model
是否有涵盖应该定义 ASP.NET MVC 模型的地方的最佳实践?
一个新的 ASP.NET MVC 项目有一个漂亮整洁的 Models 文件夹供它们进入,但在生产环境中它们可以来自其他地方:
强类型视图使用在这样的位置定义的类是否可以接受?
【问题讨论】:
标签: asp.net-mvc model
在我从事过的每个项目中,ASP.NET MVC 模型的视图模型比传统意义上的模型更多。我还没有一个项目可以使用我在数据访问中使用的相同模型来访问我的视图模型。大多数页面上需要显示的其他信息太多了。因此,出于这个原因,我要么将我的模型存储在模型文件夹中,要么将它们与我的所有其他 MVC 特定类一起存储在一个单独的库中。
【讨论】:
我不知道您将模型放入 WCF 服务的确切含义。如果您的意思是使用公开您需要的模型对象的 WCF 服务,那将起作用。
关于保存模型、视图和控制器的单独类库,我认为这是一种非常常见的方法并且效果很好。事实上,我相信当您的应用程序的规模和复杂性增加时,这确实是一项要求。这是 MVC 应用程序中不同逻辑组件的一种物理分离。
【讨论】:
我发现的一个问题是,除非模型是在 Web 项目中定义的,否则在使用标记中指定的强类型视图时,VisualStudio 似乎无法找到它。我的模型通常在一个单独的项目中定义,我发现要使用强类型视图,我需要创建一个代码隐藏,以便我有一个派生自强类型 ViewPage 的类。然后我更改标记并将其与此类关联。
【讨论】:
您需要将命名空间导入到视图页面。这确实不需要代码隐藏页面。
使用指令
<%@ import namespace='your.namespace.here' %>
紧接在<@ Page..... 指令之后
【讨论】: