Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在MVC中将一个对象的多个实例添加到一个临时对象中?_Jquery_Asp.net Mvc_User Interface - Fatal编程技术网

Jquery 如何在MVC中将一个对象的多个实例添加到一个临时对象中?

Jquery 如何在MVC中将一个对象的多个实例添加到一个临时对象中?,jquery,asp.net-mvc,user-interface,Jquery,Asp.net Mvc,User Interface,我有一个对象,它有几个包含子对象的不同列表属性 我正在尝试用最好的方式让用户从一个新视图中选择并添加这些子对象,在这个新视图中我正在创建父对象的新实例 例如,假设我有一个Project类和一个新的ViewPage,它向用户提供创建新项目的表单。在此表单上,用户可以提供基本属性的数据,没有问题,然后有一个区域允许用户将ProjectExpense对象添加到此新项目。对于每个项目费用,用户选择费用类别、行项目值,可能是数量。当用户想要增加一项以上的费用时,我们允许他通过提供一个漂亮的jQuery行克

我有一个对象,它有几个包含子对象的不同列表属性

我正在尝试用最好的方式让用户从一个新视图中选择并添加这些子对象,在这个新视图中我正在创建父对象的新实例

例如,假设我有一个Project类和一个新的ViewPage,它向用户提供创建新项目的表单。在此表单上,用户可以提供基本属性的数据,没有问题,然后有一个区域允许用户将ProjectExpense对象添加到此新项目。对于每个项目费用,用户选择费用类别、行项目值,可能是数量。当用户想要增加一项以上的费用时,我们允许他通过提供一个漂亮的jQuery行克隆来实现这一点,它为用户提供了一个新的工作行

我遇到的问题是如何在提交表单时将数据返回到Create操作。现在,我正试图解析未知数量的ProjectExpense行,这很痛苦。似乎更好的选择可能是在每次添加行时将ProjectExpense对象存储在服务器上的某种会话或临时数据包中。然后在这个动作中,我们抓起这个包,将它附加到父对象上,并像平常一样保持


有没有想过其他人是如何做这种工作的

我找到了一个可能的解决方案,供其他人参考,基本上与我一样复制表单字段,但在表单提交按钮上,他正在调用一个方法,该方法使用动态数据中的适当数据更新隐藏表单字段


这是我脑子里想不到的,我不是在考虑AJAX,这里只是一个简单的服务器往返,但是:为什么不在页面上有两个表单呢

第一个表单将发布到“新建”项目操作,第二个表单将发布到“创建项目费用”操作

为了模型的清晰度和清洁度,您可能会将它们放在局部视图中

如果您是在创建项目之前创建费用,那么您可以创建一个临时对象,该对象可能不会持久化到您的数据存储中,并且只在项目保存时保存它,尽管我怀疑这是否是正确的设计决策,并且在执行之前要好好考虑

如果您使用AJAX来实现这一点,那么问题就更简单了,您可以维护整个对象的JSON表示,然后将其发回服务器进行反序列化和处理


希望有帮助。

您可以轻松地将这些新行值绑定到IList。哈克德有,但有点过时了。但是评论中有很多有用的和最新的信息。在我看来,与你在评论中提供的杰洛夫的帖子相比,这篇帖子对这种可能性的描述要好得多。 因此,您只需更改添加ProjectExpense行的JS代码,以设置适当的名称,并在控制器方法中使用IList绑定。您不需要在一些自定义JS中收集所有值并将它们添加到某个隐藏字段中,等等。这项功能已经开箱即用。
更新:刚刚找到一个关于此的好链接

很抱歉选择答案时出现延迟。除了我自己的投入,这个解决方案最终真的是最适合我的需要。我还有一些其他的问题要处理,这使得这很困难,但它确实突出了一些我以前没有注意到的领域问题,直到我开始以这种方式绑定。