如何:使用 MVC 和 Ajax 在网格中添加/删除行以进行数据输入 +模型绑定?

发布于 2024-10-17 07:50:48 字数 637 浏览 5 评论 0原文

我是 Ajax 新手,但我想我知道如何合理使用 MVC + 模型绑定。

我想要做的是创建一个“添加”按钮(或 Ajax.ActionLink)以在网格中添加一个新行以用于数据输入。示例:考虑一个具有订单(标题)和产品(项目)的典型订单输入系统。我的 OrderViewModel 包含一个“Order”对象,而 Order 对象包含一个集合 List。

我计划执行此操作的方法是,我的视图在 PartialView 中渲染网格,而 PartialView 是一个简单的 for 循环,用于从列表创建表标签。我将使用默认的模型绑定器(用于集合)。

有人对如何做到这一点有建议吗?

我已经弄清楚如何使用 jQuery 来做到这一点,但我想(我想我想)尝试使用 Ajax,以便我可以添加我的自定义业务逻辑(例如设置默认值、翻译等),而不是在客户端执行此操作。

换句话说,我想做一些类似于 Telerik 网格通过添加/删除链接/按钮进行 Ajax 编辑的操作。

提示和示例代码将不胜感激。

我面临的挑战之一,并且不确定我是否走错了路,是我不知道如何将模型从 Ajax 提交传回控制器操作。当我查看 Telerik 的代码时,看起来他们将持久项目存储在 HttpContext.Session 中,这正是我不想使用他们的网格的原因。

谢谢。

I'm new to Ajax, but I think I know how to reasonably use MVC + model binding.

What I'm trying to do is to create an Add button (or Ajax.ActionLink) to add a new row in my grid for data entry. Example: Think of a typical Order entry system with Order (header) and Product (items). My OrderViewModel contains an "Order" object, and the Order object contains a collection List.

The way I plan to do this is that my View render the grid in a PartialView, and the PartialView is a simple for-loop to create the table tags from the List. I will use the default model binder (for collections).

Anyone have suggestions on how to do this?

I've already figured out how to do this using jQuery, but I want (i think I want) to try and use Ajax so that I can add my custom business logic (e.g. like setting defaults, translations, etc.)as opposed to do this client-side.

In other words, I want to do do something similar to what the Telerik grid does with its Ajax Editing with the Add/Remove link/buttons.

Tips and sample code would be greatly appreciated.

One of my challenges, and not sure if I'm going down the wrong way, is that I don't know how to pass back the model back to the Controller Action from the Ajax submit. When I look at Telerik's code, it looks like they store the persisted items in HttpContext.Session, and this is exactly the reason why I don't want to use their grid.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷情妓 2024-10-24 07:50:48

他们可能会选择会话存储库存储来进行演示。如果您从模型的 SessionProductRepository 类中转换逻辑并为其实现相同的更新/插入/删除方法,您可能会得到您想要的。

They might choose the session repository storage for demonstration purposes. If you transform the logic from their SessionProductRepository class for your model and implement identical Update/Insert/Delete methods for it, you'll probably get what you want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文