如何验证多部分模型?
我正在处理一个非常大的订单,其中包含一次性提交的一堆多部分数据。我正在使用这个技巧,在 HTML 中呈现 30-40 个项目行,并允许用户使用 jQuery 或多或少地“显示”或“隐藏”。
问题是,虽然用户可能“显示”三行,并且他们碰巧完全填写了所有三行,但我的模型永远不会验证,因为还提交了另外 27 个无效(空)项目。
我的解决方案是拧紧内置模型验证并使用一些自定义模型验证,例如 ModelState.AddModelError(),但我觉得自己必须在控制器级别重复我的模型验证。
有更好的方法来处理这个问题吗?
I'm working on a really big order form with a bunch of multi-part data that's submitted all at once. I'm using that trick where you render 30-40 item rows in the HTML and allow the user to "show" or "hide" more or less using jQuery.
The problem is that while the user may have, say, three rows "showing" and they happen to fill all three out completely, my model will never validate because there's an additional 27 invalid (empty) items being submitted as well.
My solution was to say screw the built-in model validation and use some custom model validation a la ModelState.AddModelError(), but I feel like a douche having to repeat my model validation at the controller level.
Is there a better way to handle this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将大表格拆分为多个表格。每种形式代表不同的步骤。将大型模型拆分为多个视图模型,每个视图模型对应于给定的步骤。如果您希望使用 ajax 方式提交表单并显示/隐藏步骤,请逐步使用 jquery 进行增强。
Split the large form into multiple forms. Each form will represent a different step. Split your large model into multiple view models each corresponding to a given step. Progressively enhance with jquery if you wish to ajaxify the form submission and show/hide steps.
谢谢,但我只是迭代每一行,并使用 jQuery 在提交按钮的 onclick 事件上从 DOM 中删除空行。
Thanks, but I just iterated through each row and removed empty rows from the DOM on the onclick event of my submit button using jQuery.