asp.net-mvc - 如何使用 AJAX 调用更新 MVC 中带有“添加”和“删除”按钮的对象列表(更大模型的一部分)?

标签 asp.net-mvc asp.net-mvc-3

情况如下:

  1. 我有一个 ViewModel,其属性为 List<Product> ,其中Product是一个具有属性 Property1 的类, Property2Property3 .
  2. 我必须渲染 ViewModel,并且我希望渲染 List<Product>在 HTML 表格中,每行都有一个“删除”按钮。
  3. 在上述 HTML 表格下方,应该有 2 个按钮:

    3.1“添加”-用于添加新的空Product到列表

    3.2 “使用默认产品列表” - 列表必须通过 AJAX 调用 GetDefaultProduct() 加载 Controller 的 Action

  4. 点击“删除”、“添加”或“使用默认产品列表”按钮不应发布整个页面
  5. 该模型还包含一些其他项目列表 - 例如: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/

相关文章:

javascript - 使用 .NET MVC 中的 Response.Filter 将所有 JavaScript 保留在页面底部

asp.net - 如何防止在asp.net mvc中上传exe文件

asp.net-mvc-3 - 使用资源字符串的 DisplayFormat 数据注释

c# - 枚举标志的模型绑定(bind)列表

asp.net-mvc - 渲染 ActionLink 时如何模拟模型绑定(bind)行为?

c# - 如何使用身份以编程方式在 asp.net 5 中创建用户

c# - 从 C# 类库验证用户 - MVC

javascript - JQuery - $ 未定义

asp.net - AuthenticationManager.SignIn() 未登录

asp.net-mvc-3 - 将HTML代码附加到现有的Razor部分