我有一个非常大的表格,需要用户填写。无论是否有效,他们都需要能够保存他们的进度。当他们稍后回来时,他们可以更新并使其生效 - 然后提交数据。
我在域模型上使用客户端脚本(xval)、服务器端属性。
我有一个非常大的表格,需要用户填写。无论是否有效,他们都需要能够保存他们的进度。当他们稍后回来时,他们可以更新并使其生效 - 然后提交数据。
我在域模型上使用客户端脚本(xval)、服务器端属性。
您的一个选择是使用 [Save Draft] 按钮,该按钮将转到不同的 Action SaveDraft() 而不是 Save()。通过使用单独的方法,您可以决定对 Save 操作所需的验证量。我认为更清洁。
让相同的保存操作决定是否应用验证逻辑的数量将更难阅读和维护。
我对 xval 不太了解,但也许您可以考虑从 xval 属性继承并在那里进行检查...
例如 ConditionalRequiredAttribute :RequiredAttribute,它可能会采用适当的状态来验证。
如果满足验证条件(状态!=“草稿”),验证将与 ConditionalRequiredAttribute 的 validate 方法上的 base.Validate() (或其他任何名称)一样简单。
因为我不知道 xval,所以我不确定客户端验证是如何工作的……它会创建客户端验证代码吗?在这种情况下,您必须编写在 javascript 中创建类似包装器的代码(例如 if(status != "Draft")... 如果验证只是对返回错误列表的服务器进行 Ajax 调用,那么我想你不必做任何其他事情。
抱歉,我无法直接回答您的问题,但也许这可以帮助您提出一些想法……