0

我有这种情况。

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

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

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

4

2 回答 2

2

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

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

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

a) 在提交视图 A 时插入前五个值,然后插入具有虚拟或默认值的后五个字段。当提交视图 B 时,用实际值更新这条记录的最后五个值。

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

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

于 2012-05-18T10:51:22.183 回答
0

我可以想到两种方法来做你需要的:

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

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

另一种选择是禁用客户端验证并仅执行服务器端验证。我的意思是,在任何情况下,您都应该在持久化模型之前始终进行服务器端(检查业务规则)验证。

于 2012-05-18T10:07:21.617 回答