C# 在ASP.NET MVC应用程序中使用表单数据创建对象

C# 在ASP.NET MVC应用程序中使用表单数据创建对象,c#,asp.net-mvc,C#,Asp.net Mvc,首先,为标题道歉;我不确定用什么最好的方式来表达这个问题。基本上,我正在使用ASP.NET MVC 5创建我的第一个web应用程序,我不确定如何使用表单数据创建新对象,然后将它们与另一个对象关联 我正在创建的应用程序是一个锻炼/锻炼日志。我希望能够创建一个新的训练,添加已完成训练的记录,然后将训练条目保存到数据库中 为了做到这一点,我创建了一个锻炼班、一个锻炼班和一个锻炼记录班 健身班有: 日期 持续时间 练习记录对象的集合 ExerciseRecord类具有: 练习集 重复练习 举重 与

首先,为标题道歉;我不确定用什么最好的方式来表达这个问题。基本上,我正在使用ASP.NET MVC 5创建我的第一个web应用程序,我不确定如何使用表单数据创建新对象,然后将它们与另一个对象关联

我正在创建的应用程序是一个锻炼/锻炼日志。我希望能够创建一个新的训练,添加已完成训练的记录,然后将训练条目保存到数据库中

为了做到这一点,我创建了一个锻炼班、一个锻炼班和一个锻炼记录班

健身班有:

  • 日期
  • 持续时间
  • 练习记录对象的集合
ExerciseRecord类具有:

  • 练习集
  • 重复练习
  • 举重
  • 与单个练习对象的关联
  • 与单个训练对象的关联
当用户希望创建训练时,他们将被引导到“我的训练控制器”的“创建/编辑”视图,并使用为日期和持续时间设置的默认值创建一个新的训练对象(如w1)

该视图由一个表单组成,用户可以在其中输入锻炼日期、时间和锻炼记录的详细信息,如锻炼名称、重复次数、设置和体重(显示为表格)

我希望发生的是,当用户单击添加新的锻炼记录时,一个ExerciseRecord对象正在使用输入的详细信息,然后被添加到与当前锻炼(w1)关联的ExerciseRecord对象集合中。然后,添加所有训练记录后,用户可以将训练保存到数据库中

<> P>我的方法是考虑新创建的锻炼就像一个购物车,当添加了一个新的锻炼记录时,就好像把一个产品添加到购物车里一样。保存训练类似于签出/完成订单

我的想法是将一个锻炼记录行作为一个小表单,这样当用户单击添加锻炼时,数据将被提交,然后添加到当前锻炼对象中,用户将被重定向回创建/查看页面,新添加的锻炼记录细节将出现在该页面中

我想我可以在TempData中传递当前“打开”的训练对象,但我不确定我是否以正确的方式进行了所有这些


非常感谢您的任何建议。

可能对您来说“太宽泛”了。IMHO,这种方法看起来还可以-一个“带有关联项目的父对象”(又名购物车+购物车项目)。然而,将其映射到现实世界,“购物会话”可能不会映射到“训练会话”(在持久性的上下文中),因此这可能等同于更新db中的“训练对象和每个项目的状态”(始终保持),直到训练“完成”。谢谢@EdSF,我想,与其像会话一样使用训练,也许我会尝试在用户单击创建时立即将其添加到数据库中。然后,我可以传递训练id并访问存储的数据,而不是试图通过TempData传递对象。您可以使用中的技术在视图中动态创建新的
ExerciseRecord
对象,并在一次POST操作中保存
训练
及其
ExerciseRecords
集合,这实际上就是我是说@AdamGreenall:)你只需更新它、详细信息和/或状态,直到它“完成”。可能会“太广泛”了。IMHO,这种方法看起来还可以-一个“带有关联项目的父对象”(又名购物车+购物车项目)。然而,将其映射到现实世界,“购物会话”可能不会映射到“训练会话”(在持久性的上下文中),因此这可能等同于更新db中的“训练对象和每个项目的状态”(始终保持),直到训练“完成”。谢谢@EdSF,我想,与其像会话一样使用训练,也许我会尝试在用户单击创建时立即将其添加到数据库中。然后,我可以传递训练id并访问存储的数据,而不是试图通过TempData传递对象。您可以使用中的技术在视图中动态创建新的
ExerciseRecord
对象,并在一次POST操作中保存
训练
及其
ExerciseRecords
集合,这实际上就是我是说@AdamGreenall:)您只需更新它、详细信息和/或状态,直到它“完成”。