0

我有一个 ViewModel,其中包含付款金额等内容。用户可以通过卡或银行账户支付。

我在付款视图模型中有两个视图模型。

我想知道如何在提交表单时只能“验证”一种支付类型的视图模型(卡或银行)。

我有一个 jquery 手风琴的事情,他们可以选择卡支付或银行支付,选择后,div 展开并输入适当的信息。

每个付款类型 div 都有一个 Html.BeginForm ,然后发布到正确的操作,即:

<div>
@using (Html.BeginForm("SubmitCardPayment", "Account"))
{
    // submit button here
}
</div>
<div>
@using (Html.BeginForm("SubmitBankPayment", "Account"))
{
    // submit button here
}
</div>

我确实在卡和银行支付视图模型的视图模型中实现了 IValidatableObject 以在那里进行一些验证。但是我想知道如何在此处仅验证其中一个付款视图模型,以及是否存在明显显示错误但确保其他付款视图模型不受影响或在未输入详细信息时阻止其提交的错误,因为两种付款视图模型都具有必需的属性。

当前发生的情况是,当有提交时,我确实传递了整个视图模型(因为父视图模型包含产品 ID、支付金额等内容......)但随之而来的是两种支付类型的视图模型

谢谢

更新- 我还注意到在提交任一表单时,父视图模型的数据似乎并没有随它一起发布。不知道为什么会这样。

4

1 回答 1

0

好的,所以似乎可行但不合理的解决方案如下:

创建包含付款类型的 2 个子模型的主父 VM。

在表单上提交帖子到不同的操作,但给出更具体的视图模型(基本上是父视图模型+该上下文中唯一的支付类型视图模型,如父+银行或父+卡)

然后如果我们有任何验证错误等......我们使用 2 个子模型创建我们的主父 VM,映射属性并将其返回到视图。

这确实很好用,但认为需要做更多的工作。

于 2013-09-25T14:20:46.633 回答