Yii MVC3:针对不同输入场景的不同验证

Yii MVC3:针对不同输入场景的不同验证,yii,asp.net,asp.net-mvc,asp.net-mvc-3,validation,Yii,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Validation,我已经在php中广泛使用了框架,并发现它非常有用。 总之,场景允许您对不同的视图使用不同的验证标准 问题 我可以使用mvc3内置验证,但对不同的视图有不同的验证标准。是否有内置的功能 解释 在其中一个表单中,我只想验证密码的更改;在另一个表单中,我只想验证新的用户参数;而在另一个表单中,我只需要验证一些详细的数据输入。所有值都存储在同一个表中,但需要不同的输入值集否,因为内置框架验证是基于属性的,因此如果您在视图之间共享模型,则很难在运行时更改验证要求 因此,最好为每个视图创建不同的模型 如果需

我已经在php中广泛使用了框架,并发现它非常有用。 总之,场景允许您对不同的视图使用不同的验证标准

问题

我可以使用mvc3内置验证,但对不同的视图有不同的验证标准。是否有内置的功能

解释


在其中一个表单中,我只想验证密码的更改;在另一个表单中,我只想验证新的用户参数;而在另一个表单中,我只需要验证一些详细的数据输入。所有值都存储在同一个表中,但需要不同的输入值集

否,因为内置框架验证是基于属性的,因此如果您在视图之间共享模型,则很难在运行时更改验证要求

因此,最好为每个视图创建不同的模型

如果需要在运行时对模型应用自定义验证,则可以使用


它不是内置的,但可以与现有的ASP.NET MVC验证组件一起使用,因此可以与不引人注目的验证/模型状态等一起使用。

您应该考虑使用强类型视图模型来包装数据。这些可以根据需要保存您所需的验证。同意Travis的观点,如果您想为不同的视图创建不同的验证逻辑,您应该为每个视图创建单独的视图模型。有趣的是,似乎我需要使用IValidatableObject。。让我们看看我能找到什么,就像每个人都建议对不同的视图使用不同的视图模型一样,这样你的视图是干净的(没有逻辑只显示),你的类(视图模型)承担单一的责任。作为一个建议,您可以尝试FluentValidation好的,似乎可以为每个视图使用不同的ViewModel(有点笨重,但逻辑和性能不太友好)。FluentValidation似乎也是一个不错的选择,但是我使用了每个视图的多个类来解决我的问题。我想我的问题的正确答案就在上面…==不,在asp.net中不能有场景,也不能以简单的方式。