2016-07-25 29 views
0

我有以下ViewModel如何验证ASP.NET MVC中的复选框值?

public class ReportFilters 
{ 
    [Required] 
    public DateTime From { get; set; } 

    [Required] 
    public DateTime To { get; set; } 

    [Required] 
    public int UserId { get; set; } 

    public bool IsCorrect { get; set; } 
} 

我通过其中的价值10当我把这个路线IsCorrectModelState.IsValid总是返回false。

这开始发生我加public bool IsCorrect { get; set; }

下面是我的控制器的动作看起来像

[HttpPost] 
[ValidateAntiForgeryToken] 
public JsonResult GetTotals([Bind(Include = "From,To,UserId,IsCorrect ")] ReportFilters reportFilters) 
{ 
    if (ModelState.IsValid) 
    { 
     SomeModel results; 

     if(reportFilters.IsCorrect) 
     { 
      results = conn.Database.SqlQuery<SomeModel>(SomeQuery, from, to).ToList(); 
     } else 
     { 
      results = conn.Database.SqlQuery<SomeModel>(SomeOtherQuery, from, to).ToList(); 
     } 

     return Json(results, JsonRequestBehavior.AllowGet); 
    } 

    return Json(new { }, JsonRequestBehavior.AllowGet); 

} 

问题

我该如何正确验证复选框的值之后?如果值为1那么它应该是true否则false

+0

你能拿出'[Bind(Include =“From,To,UserId,IsCorrect”)]',然后再试一次? – Win

回答

2

确保您通过你的参数选择不当

你试过路过truefalse明确(即Controller/Action?IsCorrect=true),而不是0或1?

复选框应始终直接绑定到布尔值。你只需要确保您的复选框的name属性的参数或模型属性完全匹配(即IsCorrect):

<!-- Using a plain CheckBox --> 
<input name='IsCorrect' type='checkbox' /> 
<!-- Using an HTML Helper --> 
@Html.CheckBox("IsCorrect") 

您可以在下面see a working example demonstrating this

enter image description here

+0

使用'true'和'false'的值。但是如果我传递'false','ModelState.IsValid'也会返回false。该复选框应该是可选的并且不是必需的 – Jaylen

+0

模型中没有任何内容会因为IsCorrect属性而导致它无效。但是,您需要确保您传递的是其他属性,因为这些属性使用'[Required]'标记进行修饰,因此如果为空/ null将导致验证错误。 –

+0

我正在通过'jQuery'使用ajax请求,像这样'if($('#CorrectDispositions')。is(':checked')) return“true”;否则返回“false”;' – Jaylen