情况如下:
- 我有一个 ViewModel,其属性为
List<Product>
,其中Product
是一个具有属性Property1
的类,Property2
和Property3
. - 我必须渲染 ViewModel,并且我希望渲染
List<Product>
在 HTML 表格中,每行都有一个“删除”按钮。 在上述 HTML 表格下方,应该有 2 个按钮:
3.1“添加”-用于添加新的空
Product
到列表3.2 “使用默认产品列表” - 列表必须通过 AJAX 调用
GetDefaultProduct()
加载 Controller 的 Action- 点击“删除”、“添加”或“使用默认产品列表”按钮不应发布整个页面
- 该模型还包含一些其他项目列表 - 例如:
List<Sales>
,List<Orders>
等等。我希望我也可以重新使用这些列表的列表解决方案。
有没有办法用 ASP.NET MVC 来做到这一点? 如果是,使用 ASP.NET MVC 执行此操作的最佳方法是什么?
我使用 jQuery 模板完成了此操作,并设法通过简单的操作来实现此操作,但我必须在 ASP MVC 解决方案中完成此操作,并且我仍在尝试掌握该技术的窍门。
我一直在阅读有关 Editor
的内容模板,RenderAction
, Async
操作和部分 View ,我正在尝试用它们编写一个解决方案,如果可行的话我会发布它。
预先感谢您的任何建议和意见!
更新
解决方案位于(正如达林指出的)Steve Sanderson's blog post 。 但是,它假设读者了解如何以 CRUD 友好的索引方式呈现对象列表的幕后方式。
因此,为了帮助任何想要拥有复杂对象索引列表的人,我建议阅读 Mr. Haacked 的博文:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx .
完成后,您可以转到桑德森的博客。对了,好好看看BeginCollectionItem
自定义 HTML 帮助器 - 它的实现并不像人们想象的那么简单。
该演示项目令人眼花缭乱——它恰到好处且易于理解。
建议的解决方案确实使用了一些jQuery.ajax()
调用(用于添加链接),但只是出于必要。
PS:令人有点沮丧的是,人们必须阅读 ASP.NET 开发人员的一篇明确文章才能发现默认模型绑定(bind)器中存在隐式 CoC(约定优于配置) - 它只是知道如何使用列表,但没有现成的 HTML 帮助器(或任何类似的东西)不允许您参与其中。
我个人认为 List<object>
的 CRUD 友好渲染是一种非常常见的场景,而不是边缘情况,因此它应该更易于使用,并且是 ASP.NET MVC 开箱即用机制的一部分。
最佳答案
我建议您阅读following blog post 。它肯定会让您走上实现可变长度列表编辑场景的正确轨道。
关于asp.net-mvc - 如何使用 AJAX 调用更新 MVC 中带有“添加”和“删除”按钮的对象列表(更大模型的一部分)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6726797/