2013-09-25 33 views
0

我有一个ViewModel,其中包含付款金额等内容。 用户有能力通过卡或银行账户支付。Viewmodel有2个viewmodel,只有一个需要

我在付款视图模型中都具有viewmodels。

我想知道如何才能在提交表单时“验证”一种付款类型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,支付金额等等),但随之而来的是付款方式查看模型

感谢

更新 - 我也注意到在提交的形式任一个,即父视图模型的数据似乎并没有与它一起发布。不知道为什么这样。

回答

0

好了,这似乎工作的解决方案,但没有它eligent的事情,是这样的:

创建主母VM包含2种支付类型的子型号。

在表单提交后,以不同的动作,但在一个更具体的视图模型(基本上父视图模型+像父母+银行或父+卡这方面唯一的支付类型视图模型)

给那么如果我们有任何验证错误等......我们用2个子模型创建我们的主父虚拟机,映射这些属性并将其返回给视图。

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

相关问题