2017-04-04 61 views
0

我建立具有一种形式,如果一个复选框被选中如下某些元素会隐藏使用Jquery的应用程序:删除验证使用jQuery/MVC窗体

$('#Rebilled').click(function() { 
    if ($(this).is(":checked")) { 
     $('#RebillDate').show(); 
     $('#RebillAmount').show(); 
     $('#TodaysAccountBalance').show(); 
     $('#BalanceAfterRebill').show(); 
    } 
    else { 
     $('#RebillDate').hide(); 
     $('#RebillAmount').hide(); 
     $('#TodaysAccountBalance').hide(); 
     $('#BalanceAfterRebill').hide(); 
    } 
}); 

我们同时运行服务器端和客户端 - 对这些字段进行验证,并且我们试图解决验证仍然在未隐藏时需要隐藏字段的问题。

我可以在客户端通过使用jquery删除验证,但一旦发布到服务器,服务器拒绝它,因为它们是由于被隐藏导致我的ModelState被隐藏,因为它们是现在还未填写的必需字段无效。

到目前为止我们能够解决这个问题的唯一方法是使用jQuery再次向该服务器发布的字段添加默认值。例如:

$('#RebillDate').val("01/01/1900") 

这是做这件事的正确方法还是我们错过了一些更明显的东西?

+0

使用条件验证属性(可同时适用于客户端和服务器端)。例如[万无一失](http://foolproof.codeplex.com/)'[RequiredIf]',或者您可以轻松编写自己的 - [ASP.NET MVC 3中的验证完整指南 - 第2部分](http: //www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2) –

+0

这是完美的谢谢你,你是否能够添加为一个答案,所以我可以接受它? –

+0

现在没有时间 - 也许以后(或随时添加自己的答案,并接受它将其关闭) –

回答

0

按照史蒂芬Mueckes答案:

使用条件验证属性(其工作客户端和服务器端)。例如万无一失[RequiredIf],或者您可以轻松编写自己的