2016-08-04 14 views
-1

コントローラから情報を取得するためにAjaxを使用し、それを自分のビューのチェックボックスのリストとして表示しました。チェックボックスがコントローラにバインドされていません

$(document).ready(function() { 
    $('#submitButton').hide(); //hide some buttons 
    $("#Name").hide(); 
    $("#Contact").hide(); 
    $("#Desc").hide(); 
    $("#PMeeting").hide(); 
    $("#Params").hide(); 

    $('#SelectedTeam').change(function() { 
     $('#content').html(''); 
     $.ajax({ 
      url: '/Audits/GetAuditParams', //this function retrieves a list of objects 
      type: "POST", 
      dataType: "json", 
      data: { 
       'tn': $('#SelectedTeam').val(), 
      }, 
      success: function (data) { //here I create the table with checkboxes and labels 
       $.each(data, function (i, item) { 
        var li = $('<input type="checkbox" value="' + item.Included + '" name=Parameters[' + i + '].Included id=Parameters_' + i + '__Included"/>' + 
      '<label for="Parameters[' + i + ']"></label></br>'). 
         text(item.ParameterDescription).prop('checked', item.Included); 

        li.find('label').text(item.ParameterDescription);//I create a set of hiddem fields with the same new, otherwise the collection will be null in the controller 

        $('<input>').attr({ 
         type: 'hidden', 
         id: 'Parameters_' + i + '__Included', 
         name: 'Parameters[' + i + '].Included' 
        }).appendTo('form'); 
        $('#content').append(li); 
       }); 
      } 
     }); 
     $.ajax({ //this is for a different information 
      url: '/Audits/GetAuditInfo', 
      type: "POST", 
      dataType: "json", 
      data: { 
       'tn': $('#SelectedTeam').val(), 
      }, 
      success: function (data) { 
       $("#SProject_ProjectName").val(data.ProjectID); 
       $("#SProject_POC").val(data.POC); 
       $("#SProject_PDescription").val(data.PDescription); 
       $("#SProject_PeriodicMeeting").val(data.PeriodicMeeting); 
       $("#Name").show(); 
       $("#Contact").show(); 
       $("#Desc").show(); 
       $("#PMeeting").show(); 
       $("#Params").show(); 

      } 
     }); 
     $('#submitButton').show(); 

    }); 

    function isChecked(value) { 

     if (value == 1) { 
      return true; 
     } 
     else 
      return false; 
    } 

    $('form').submit(function (e) { 
     $('input[type=checkbox]').prop('checked', function (index, value) { 
      if (value == true) { 
       $('#Parameters_' + index + '__Included').val(1); 
       $('#Parameters_' + index + '__Included').prop('checked', "checked"); 
      } else { 
       $('#Parameters_' + index + '__Included').val(0); 
      } 

     }); 
    }); 
}); 

これは私のHTMLコード

<html> 
<head> 
</head> 
<body> 
    <div class="col-md-4" id="content"></div> 
</body> 
</html> 

あるしかし、私は、コントローラ内のヌルチェックボックスのための情報を取得ModelStated.isvalid = false、これは誤り

値「ですよ0 'は含まれていません。

また、すべてのチェックボックス(チェックボックスまたはチェックボックスなし)の値は「false」です。

答えて

2

さらに詳しい情報を提供し、特定の質問の形で文章を書き換える必要があります。それ以外は、あなたのコードはすべて空白のHTMLページのようには思えません。 MVCコントローラからデータを取得する場合は、コントローラがビューに提供するモデルを作成する必要があります。

Accessing your model's data from a controller - asp.net

は基本的に、あなたは、あなたのコントローラのコンテキストのインスタンスを作成し、モデルとデータベースコンテキストを作成します。ここではあなたがそれを行うことができる方法の例があります。

public class YourController : Controller 
{ 
    private YourDBContext db = new YourDBContext(); 
    public ViewResult Index() 
    { 
     return View(db.YourData.ToList()); 
    } 

} 

剃刀の構文を使用してコントローラからビューに渡します。一般的にはお使いのモデル

@Html.CheckBoxFor(model => model.data) 

にチェックボックスをバインドする

@model IEnumerable<App.Model.Data> 

使用かみそり、私はそれが簡単にHTML /ブートストラップと少ないjQueryを使ってより多くのかみそりを使用することを見つけます。あなたのモデルやコントローラを見ずにチェックボックスの問題を解決するのは難しいですが、MVCの基本に焦点を当てれば、多くの問題が解決されると思います。この回答はあまり具体的ではありませんが、申し訳ありませんが、あなたの質問を修正すれば、私はより具体的になります。

関連する問題