【问题标题】:How to do Model validation in MVC with Web API 2?如何使用 Web API 2 在 MVC 中进行模型验证?
【发布时间】:2017-04-11 04:47:56
【问题描述】:
我是 Web API2 的新手。我的解决方案有 3 个项目(MVC、WebAPI2、EF 类库)。我有以下疑问。
1) 将 WebAPI 和 MVC 保留为单独的项目以分离关注点。将两者保留在单个项目中是可取的还是更好?
2) 使用 WCF,我们可以在 MVC 中使用服务引用来利用所有 DB 类模型,以便在 MVC 中轻松构建控制器并添加模型验证。如何使用 Web API2 做到这一点,因为我不会在 MVC 中为 DB 类提供参考。我是否需要在 MVC 项目中创建重复的 DB 类模型以用于脚手架和模型验证?
【问题讨论】:
标签:
c#
entity-framework
wcf
asp.net-mvc-4
asp.net-web-api2
【解决方案1】:
你的标题让我有些困惑,但是模型验证可以通过验证属性来完成。我将尝试回答您问题帖子正文中的问题。
这取决于您希望如何使用 MVC 和 WebApi 项目。
请记住,如果他们在同一个项目中,您可能会让事情变得更容易,因此您无需过多担心 RPC。但谁知道你打算如何使用它们。
WebAPI 通常用于与您自己以外的系统集成。由于这个原因,(反)序列化和请求/响应处理是高度可定制的。用于 WebAPI 控制器的模型通常被指定或提供给接口打算与之集成的系统。
用于 WebAPI 或 MVC 控制器的模型应该与您的 ORM 的实体模型分开。您想要这样做的原因是实体模型中的数据并不总是适合视图的使用或从视图发送回控制器的视图模型的验证。
在这两种情况下,连接您的 WebAPI 和 MVC 控制器的模型都应该设计为适应您的用例,并且应该与您的实体模型完全解耦以实现持久性。
因此,要回答您的第二个问题,您可能只需要一组实体模型和一个 dbcontext 实现,但将所有这些都放在自己的项目中,这样如果您确实有单独的 MVC 和 WebAPI 项目,它们都依赖于EF 项目。