2011-05-08 30 views
1

我已经看到如何使用窗体上的对象集合与asp mvc进行模型绑定。如何只提交变更,集合对象的一个​​子集,变化了? (添加,删除,更改)。用脚本重写提交并以某种方式自己滚动它? (为了简单起见,我们可以将更改的粒度限制在集合中的某个对象上,即不要向下对象属性)。mvc模板绑定表单上的集合,仅提交更改?

感谢

回答

2

我会考虑干脆丢弃的形式,只是专注于发布JSON回服务器。这将为您节省大量的输入元素。

在服务器端,您可以将其绑定到给定对象的列表。

0

如果您只提交更改,您将不得不 a。 (无论是通过通过JSON通过jQuery提交数据或明确地传递形式手动提交已在任何一个手工jQuery的电话改变了表单元素值

 
$.post("/controller/action", { name1: "John", name2: "Mary" }); 

它的设计选择使用JSON或不在这里 - 这两个如果你选择的JSON,改变你的dataType在调用JSON使用

 
dataType: 'json' 

b就工作得很好。 。从在岗位和 c中的形式取出不变的元素。移动改变的元素融入到自己的之前的形式 这两个B/C可以使用:

 
$.post("/controller/action", $("#changedForm").serialize()); 
+0

感谢您的回复。我得到了一些后来发现这里类似的设计 - http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/ – 2011-05-09 20:24:51

+0

获得更改对于属性集合,只需订阅输入控件上的按下按钮事件,通过在目标上添加一个“已更改”类来处理事件,然后在保存时选择已更改的项目,清除已更改的类并仅序列化这些控件并提交(并再次重新订阅已更改的控件)。在服务器上,使用AutoMap将稀疏传入属性与相关数据库条目合并。我还添加了一个collectionItem div来包装一个集合项目,以便我可以找到需要提交的隐藏输入控件get model binding working – 2011-05-09 20:39:50

+0

它是什么在steves方法上为您工作 - 这是一个动态列表,不是只是变了。你使用的最终方法是什么? – 2011-05-10 02:27:18