2012-11-05 104 views
4

我是mvc3和剃须刀引擎的新手,我希望它至少有一个复选框被选中以提交按钮触发。MVC3 Razor - 至少有一个复选框选中验证

<div class="editor-field"> 
     @Html.Label("item1") 
     @Html.CheckBoxFor(Model => Model.item1) 
     @Html.Label("item2") 
     @Html.CheckBoxFor(Model => Model.item2) 
     @Html.Label("item3") 
     @Html.CheckBoxFor(Model => Model.item3) 
</div> 
<p> 
    <input type="submit" value="Create" /> 
</p> 

我知道,我需要某种形式的标签来渲染文本如果选择0复选框,每个复选框需要一个id,这样我可以看看他们的价值观,但有什么在MVC3剃须刀,使这个简单?由于

回答

9

之一,是许多的办法是

<input type="submit" value="Create" onclick="return submitWith();"/> 
<span id="validationMessage" /> 

,并在你的JavaScript(你可能有更多的在这里,但保持简单)

function submitWith(){ 
    var checkedCount = $("input:checked").length; 
    var valid = checkedCount > 0; 
    if(!valid){ 
     $('#validationMessage').html('You must select at least one option'); 
    } 
    return valid ;   
} 
+0

这是完美的,我需要的是什么。谢谢! –

+1

但它只适用于客户端..所以最好使用自定义验证检查客户端和服务器脚本。 – Karthick

0

给一些有效的名称属性来检查每个boxes.Name检查箱应same.Lets说: Name="CheckBoxForItems"

在按钮创建按钮的Click事件:(In js)
申报数组,并使用每个功能检查是否有任何复选框:

var arr = new Array(); 
$('input[name="CheckBoxForItems"]:checked').each(function (i) { 
       arr.push($(this).attr("id")); 
      }); 

if(arr.length > 0) 
$("#ButtonId").submit(); 
} 
相关问题