必填字段验证器MVC

时间:2012-05-18 09:53:15

标签: asp.net-mvc-3

我有这种情况。

我有form Aform B。两种形式都使用单一模型。模型中有10个字段,所有字段都是强制字段(必填)..

表单A使用模型的前5个(1,2,3,4,5)字段,表单B用户使用剩余的(6,7,8,9,10)字段。

因此,当我提交form A时,它会要求我填写必填字段(6,7,8,9,10),而form B的情况也是如此,它会要求我(1,2,3,4,5)要提供的字段。我怎样才能确保只有那些字段被认为是表格上可用的字段。

2 个答案:

答案 0 :(得分:2)

这可以通过使用视图模型来实现,因此您的视图将与相关视图模型交互,然后视图模型将与模型交互。请记住,视图模型仅包含特定于模型的相关字段。这是步骤

1)制作两个带有字段(1,2,3,4,5)的视图模型A和带有字段的视图模型(6,7,8,9,10)

2)视图会将相关字段提交给他们的视图模型,然后您可以通过两种方式提交模型

a)提交视图A插入前五个值并插入下五个字段       虚拟或默认值。提交视图B后,再次更新此记录 具有实际值的五个值。

b)创建包含所有十个没有必需属性的字段的另一个ViewModelAB,创建此ViewModelAB的对象,并在提交两个视图模型(即A和B)时填充它。填写完所有字段后,将其提交给实际的数据库模型

请询问您是否需要进一步的帮助

答案 1 :(得分:0)

我可以想出两种方法来做你需要的事情:

  1. 使用所有字段创建两个模型,但只在每个表单中需要的那些上使用RequiredAttribute。所有的领域,所以你可以毫无问题地相互映射;

  2. 尝试使用RemoteValidationAttribute而不是使用RequiredAttribute,并根据调用的表单检查是否应该抛出所需的错误;

  3. 另一个选项是禁用客户端验证并仅执行服务器端验证。我的意思是,在持久化您的模型之前,您应始终以任何方式执行服务器端(检查业务规则)验证。

相关问题