MVC验证多种形式

时间:2009-09-08 02:39:02

标签: asp.net-mvc

在我预订住宿的MVC申请中,我有以下内容:

  • 使用输入表单显示所选房间的操作以获取额外信息GET:“详细信息” 此视图上有多个表单,每个表单都发布到不同的操作。

示例:

  • 更新来宾人数的行动:“UpdateGuests”
  • 选择开始日期的操作POST:“SelectStartDate”
  • 添加早餐POST的行动:“AddBreakfast”
  • 删除房间POST的操作:“RemoveProductFromCart”
  • 进行下一步操作的行动:“继续”

这些操作中的大部分将重定向回GET:“详细信息”视图,以便用户可以根据需要执行其他操作,如果是继续,则会重定向到下一个视图或者如果有某些原因他们不能继续它将在“详细信息”视图中显示关于原因的验证消息。

我不确定处理验证的最佳方法,这是我想到的一些选项。

  • 使用TempData []存储验证消息,并使用REDIRECT到“详细信息”视图,我们在其中添加任何TempData错误,以便模型化。
  • POST中的
  • :“xxxxxx”操作填充ModelState和RENDER的“详细信息”

这不是一个高容量的网站,所以TempData是一个选项。

感谢任何想法。

编辑: 其他信息:

  • 我在某些地方使用DataAnnotations作为验证规则。
  • 计划添加Ajax作为渐进增强,但它应该没有。

2 个答案:

答案 0 :(得分:1)

我认为您的第二个选项是最好的:每个帖子操作都会执行必要的验证,使用错误消息填充ModelState,每个帖子将返回相同的视图,使用您的模型重建。

另一种选择,稍微更难但提供更好的用户体验是使用ajax调用做一些操作(如更新人数,选择开始日期,添加早餐)。这样,您只能返回此操作所需的一小部分信息,只刷新屏幕的那一部分,并在需要时添加一些错误消息。

我希望它会有所帮助。

答案 1 :(得分:0)

您是否看过nerd Dinner如何验证?我已经将这种方法用于包含多个部分视图的表单,并且效果很好。

如果你想做的话,你甚至可以修改为使用jQuery进行验证。