2016-07-25 3 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; } 
} 

я прохожу либо значение 1 или 0, когда я называю этот маршрут IsCorrect но ModelState.IsValid всегда возвращается ложь.

Это начало происходить после того, как я добавил 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

Убедитесь, что вы отдаете ваш параметры Правильно

Вы пробовали прохождения true или false явно (т.е. 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]' и, таким образом, вызовут ошибки проверки, если empty/null. –

+0

Я использую ajax-запрос через 'jQuery' что-то вроде этого' if ($ ('# CorrectDispositions'). Is (': checked')) return "true"; else return «false»; ' – Jaylen

Смежные вопросы