不引人注目的MVC3验证组复选框

Sha*_*eKm 11 asp.net-mvc asp.net-mvc-3

我需要使用MVC3不显眼的验证来验证一组复选框.我该怎么办?我找到了并尝试了它,但它不起作用.

$(function(){

        $.validator.addMethod('cb_selectone', function(value,element){
            if(element.length>0){
                for(var i=0;i<element.length;i++){
                    if($(element[i]).val('checked')) return true;
                }
                return false;
            }
            return false;
        }, 'Please select at least one option');

        $('#main').validate({rules:{Services:"cb_selectone"}});
Run Code Online (Sandbox Code Playgroud)

...

我的Html:

<input type="checkbox" class="checkbox" name="Services" value="1" />
<input type="checkbox" class="checkbox" name="Services" value="2" />
<input type="checkbox" class="checkbox" name="Services" value="3" />
Run Code Online (Sandbox Code Playgroud)

如果有人提供了服务器端+客户端验证的完整解决方案(当然使用MVC3不引人注意的验证),那将是最好的.

谢谢

Sha*_*eKm 21

好吧,想通了:

用于服务器验证:使用数据注释(必需将执行此操作)

在我的视图模型中是这样的:

[Required(ErrorMessageResourceName = "fld_Service_val_Required_lbl", ErrorMessageResourceType = typeof(Resources.Service.Controllers.Firm))]
public ICollection<int> Services { get; set; }
Run Code Online (Sandbox Code Playgroud)

为了在我的HTML中进行客户端验证,我在输入复选框中添加了一个类:

<input type="checkbox" class="checkbox required-checkbox" name="Services" value="1" />
<input type="checkbox" class="checkbox required-checkbox" name="Services" value="2" />
<input type="checkbox" class="checkbox required-checkbox" name="Services" value="3" />
Run Code Online (Sandbox Code Playgroud)

并且:

$(function(){
        $.validator.addMethod('required_group', function(value, element) {
            var $module = $(element).parents('form');
            return $module.find('input.checkbox:checked').length;
        }, 'Select at least one Service please');
        $.validator.addClassRules('required-checkbox', { 'required_group' : true });  
Run Code Online (Sandbox Code Playgroud)

..

不确定这是否是最好的解决方案,但它的工作原理:).如果有人知道更好请发帖.