2016-07-25 8 views
0

私はIsCorrectにこのルートを呼び出すが、ModelState.IsValidは常にfalseを返しているとき、私はViewModelASP.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のいずれかに合格しています。

これは、私がここで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または1とは対照的に、

+0

を取ることができます'[Bind(Include =" From、To、UserId、IsCorrect ")]'、そしてもう一度やり直してください。 – Win

答えて

2

あなたはあなたのパラメータを渡していることを確認が正しく

明示的に(すなわちController/Action?IsCorrect=true)をtruefalseを渡してみましたか?

チェックボックスは、常にブール値に直接バインドする必要があります。あなたは(つまり、IsCorrect)あなたのチェックボックスのname属性が正確にあなたのパラメータやモデルの特性と一致することを確実にするためにちょうど必要があります:

<!-- 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

私は、この '$( '#CorrectDispositions')が( ':checked'))のような' jQuery'を介してajaxリクエストを使用してpositingしています。 return "true";それ以外の場合は 'false ';' – Jaylen

関連する問題