不止一步的实体持久性(ASP.NET MVC 4)

Posted

技术标签:

【中文标题】不止一步的实体持久性(ASP.NET MVC 4)【英文标题】:Persistence of entity in more than one step (ASP.NET MVC 4) 【发布时间】:2013-10-08 19:28:15 【问题描述】:

我的朋友们,我遇到了以前没有遇到过的情况。我有一个需要保存的实体(又名 Person ;)。但问题是我有一组人的信息,我希望要求用户在多个控制器中输入,这样用户就不必填写扩展表格。他将逐步填写个人信息、学术信息、工作历史信息等表格。我正在使用 MVC 4。我是否必须为每个表格/视图创建一个控制器?因为我的实体具有我需要立即坚持的所有属性(顺便说一下,我计划使用 ORM,还没有决定它是 NHibernate 还是实体框架)。谢谢。

【问题讨论】:

【参考方案1】:

您不需要为每个视图创建新的控制器。这实际上不是你想要做的。听起来您可能来自 WebForms,这需要为每个表单提供不同的页面。

MVC 不能这样工作。只需为每个页面创建一个新的操作和视图。

就持久化数据而言,有很多方法可以做到这一点。您可以使用会话数据,或者更好的是使用数据库(模型)来存储数据。您可以使用 ADO.NET/Entity Framework 之类的东西来帮助解决这个问题,这样您就不必弄乱肮脏的数据库细节。

【讨论】:

【参考方案2】:

您可能会发现实例化此人实体并将部分填充的数据保留在 ViewBag 或您喜欢使用的任何其他(全局变量)中很有用。 这样,无论您遵循什么设计,如果可能的话,可以是单个控制器,也可以是多个。您只需要从 viewbag 中获取数据并将其保存到 DB 中。

它还允许您轻松地在表单中导航,并且可以使用 viewbag 填充数据。

【讨论】:

我也考虑过视图包......我只是对控制器和动作的责任概念感到困惑......现在一切都清楚了......感谢您的快速回答=)跨度> 我的荣幸先生。是的,你可以有这种情况。

以上是关于不止一步的实体持久性(ASP.NET MVC 4)的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC5+EF6搭建三层实例

如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入

ASP.NET C# MVC 实体框架

Entity Framework的学习(ASP.NET MVC5的学习中的一部分)

如何在 asp.net MVC 4 Razor 中绑定剑道网格

如何在 Asp.Net 5 (MVC 6) 中使用实体框架 6.x