GON*_*ale 2 .net ajax asp.net-mvc jquery model-binding
通过jquery ajax调用提交数据时遇到一些毛茸茸的问题.基本上,使用jquery 动态添加到屏幕的管理网格中的表单字段的表单值不会在批处理保存命令上更新.
基本上我有一个网格列表,显示保存到数据库的所有当前行,每列包含表单字段.然后我在页面顶部有一个表单,这是您典型的添加另一个详细信息表单.键入值,按"添加",通过jquery json ajax调用将其保存到数据库,并添加表单数据并反映在listing表的新行中.(这部分有效)
我的问题在于您希望在新添加的jquery表行中更改表单值.按下保存按钮时,只会重新保存任何已构建的表格行.您的动态记录格式数据并没有保存.更新调用使用jquery ajax和ASP.NET MVC模型绑定.在"添加"我将返回一个asp.net mvc"局部视图"到我的jquery ajax响应,它被添加到网格列表表中使用$("#tablename tr:last").after(result).
我已经推断出,如上所述,新动态添加的行不会更新.我有一个IList<Item>在我的MVC模型绑定列表中返回到我的控制器操作方法的集合,该方法包含整个项目列表,减去新创建的jquery动态添加表单字段行.这是问题所在,当您执行页面刷新时,行将返回到初始添加时输入的原始表单值.
任何想法为什么我IList<Item>的不包括这些动态添加的行?在Firebug中检查他们在name属性中使用相同的命名修道院,一切都应该没问题.
格雷厄姆.
更新1月5日11:00 GMT + 10:我确实在将模型绑定从IList更改为FormCollection时收到了值.我不想使用FormCollection而不是模型绑定,但是如果我可以通过FormCol正确地获取它,那么问题是什么,为什么不使用IList模型绑定器?我已将数组条目与工作项进行比较,它们都符合相同的标准和值.
我不是一个ASP程序员,但我做了很多jquery工作.如果我正确理解您的问题,则动态生成的行不会绑定到将执行更新操作的回调函数.
您可以通过使用jQuery"live"函数(如Wikidkaka试图告诉您)将动态生成的元素绑定到回调,或者您可以在ajax调用返回时触发的回调函数中手动绑定新创建的元素.
我建议使用在(我相信)最新版本的jQuery中添加的本机实时函数.它将使您不必编写额外的行来手动绑定回调并使代码维护更容易.
所以改变:
$('div.your-save-buttons').click(updateFunction);
Run Code Online (Sandbox Code Playgroud)
至
$('div.your-save-buttons').live(updateFunction);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3416 次 |
| 最近记录: |