验证不属于模型的输入字段

时间:2011-10-07 14:03:15

标签: asp.net-mvc asp.net-mvc-3 validation

我已经阅读了如何验证我的MVC模型的工作原理。这很酷。

但我需要验证严格的UI情况,这与模型无关。具体来说,我需要检查用户在单击链接之前单击了几个复选框之一。让我再次强调,复选框不代表模型数据:它们严格用于视图和控制器目的。

在WebForms世界中,我只是坚持使用RequiredFieldValidator。对于不代表模型上的字段的字段,等价物是什么?

3 个答案:

答案 0 :(得分:1)

您需要执行一些自定义模型绑定来检查请求对象并采取相应措施(添加模型状态错误等等)。这是一个与自定义模型绑定相关的帖子应该是有益的。

ASP.Net MVC Custom Model Binding explanation

进入自定义模型绑定器后,您可以在CreateModel方法中添加与此类似的代码:

Dim request As HttpRequestBase = controllerContext.HttpContext.Request
If Not request.Form.AllKeys.Contains("YourCheckBoxName") Then
     bindingContext.ModelState.AddModelError("AnError", "You must check the box first")
End If

答案 1 :(得分:0)

您可以使用jquery验证将验证规则注入验证集。

答案 2 :(得分:-1)

使用css类名称检查是否已检查其中一个框的快速而脏的解决方案。

<input type="checkbox" value="1" name="something" class="boxGroupName" /> Check1
<input type="checkbox" value="2" name="another" class="boxGroupName" /> Check1
<input type="checkbox" value="3" name="third" class="boxGroupName" /> Check1

<input type="submit" id="buttonId" />    

<script type="text/javascript">
$(function() {
    $('#buttonId').click(function() {
        if ($('.boxGroupName:checked').length == 0) {
            alert('Check some boxes, ehh?');
            return false;
        }
        return true;
    });
});
</script>