2016-11-03 12 views
0

は、私が持っているこれらのモデル:ASP.Net MVC投稿フォーム

public class FinalizedWebinarAttendeesList 
{ 
    public List<FinalizedWebinar> Webinars { get; set; } 
} 
public class FinalizedWebinar 
{ 
    public int ParticipantID { get; set; } 
    public bool AffidavitRecvd { get; set; } 
} 

は今、私はAffidavitRecvd値のチェックボックスを設定するには、ユーザーを表示するためのHTMLフォームにこのデータを入れて、できるようにしたいと各出席者のParticipantID。

私が持っているフォームは、パネルグループ内のアコーディオンで、各出席者は下のHTMLに示すテーブルにあります。

<div class="row"> 
    <form name="FinalizeWebinar" id="finalize-webinar-form" method="post" action="/Home/StoreFinalized"> 
     <div class="col-lg-12" id="attendeesTable"> 
      <div class="panel-group" id="accordion"> 
       <div class="panel panel-default"> 
        <div class="panel-heading"> 
         <h4 class="panel-title pull-left" style="width:90%"> 
          <a class="" data-toggle="collapse" data-parent="#accordion" href="#collapse0" aria-expanded="true">909428<br>Katie Perry</a> 
          <input type="hidden" name="[909428].ParticipantID" value="909428"> 
         </h4> 
         <div class="pull-right" style="width:10%;"> 
          <span class="affrcvd_chk">Affidavit Received?<br> 
           <input id="affrcvd_chk_box" type="checkbox" name="[0].AffidavitRecvd"> 
          </span> 
         </div> 
         <div class="clearfix"></div> 
        </div> <!--/.panel-heading --> 
        <div id="collapse0" class="panel-collapse collapse in" aria-expanded="true"> 
         <div class="panel-body"> 
          <div> 
           <input type="hidden" name="[0].FullName" value="Katie Perry"> 
           <div class="table-responsive"> 
            <table class="table table-bordered table-hover table-striped" id="attendee0Table"> 
             <thead> 
              <tr> 
               <th>Webinar</th> 
               <th>Time In Session</th> 
               <th>First Poll Count</th> 
               <th>Second Poll Count</th> 
               <th>Attended</th> 
              </tr> 
             </thead> 
             <tbody> 
              <tr class=""> 
               <td>Webinar 1: Wednesday</td> 
               <td>2 hrs 27 mins</td> 
               <td>4</td> 
               <td>4</td> 
               <td>YES</td> 
              </tr> 
              <tr class=""> 
               <td>Webinar 1: Thursday</td> 
               <td>2 hrs 4 mins</td> 
               <td>4</td> 
               <td>4</td> 
               <td>YES</td> 
              </tr> 
             </tbody> 
            </table> 
           </div> <!-- /.table-responsive --> 
          </div> 
         </div> <!--/.panel-body --> 
        </div> <!--/.panel-collapse --> 
       </div><!-- /.panel --> 
      </div> <!-- /.panel-group --> 
      <div class="panel-group" id="accordion"> 
       <div class="panel panel-default"> 
        <div class="panel-heading"> 
         <h4 class="panel-title pull-left" style="width:90%"> 
          <a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapse1">914251<br>Taylor Swift</a> 
          <input type="hidden" name="[914251].ParticipantID" value="914251"> 
         </h4> 
         <div class="pull-right" style="width:10%;"> 
          <span class="affrcvd_chk">Affidavit Received?<br> 
           <input id="affrcvd_chk_box" type="checkbox" name="[1].AffidavitRecvd"> 
          </span> 
         </div> 
         <div class="clearfix"></div> 
        </div> <!--/.panel-heading --> 
        <div id="collapse1" class="panel-collapse collapse"> 
         <div class="panel-body"> 
          <div> 
           <input type="hidden" name="[1].FullName" value="Taylor Swift"> 
           <div class="table-responsive"> 
            <table class="table table-bordered table-hover table-striped" id="attendee1Table"> 
             <thead> 
              <tr> 
               <th>Webinar</th> 
               <th>Time In Session</th> 
               <th>First Poll Count</th> 
               <th>Second Poll Count</th> 
               <th>Attended</th> 
              </tr> 
             </thead> 
             <tbody> 
              <tr class=""> 
               <td>Webinar 1: Wednesday</td> 
               <td>2 hrs 37 mins</td> 
               <td>4</td> 
               <td>4</td> 
               <td>YES</td> 
              </tr> 
              <tr class=""> 
               <td>Webinar 1: Thursday</td> 
               <td>2 hrs 11 mins</td> 
               <td>4</td> 
               <td>4</td> 
               <td>YES</td> 
              </tr> 
             </tbody> 
            </table> 
           </div><!-- /.table-responsive --> 
          </div> 
         </div><!--/.panel-body --> 
        </div><!--/.panel-collapse --> 
       </div><!-- /.panel --> 
      </div><!-- /.panel-group --> 
     </div> <!-- /.col-lg-12 --> 
    </form> 
</div><!-- /.row --> 

これは、フォームのアクションでの関数の定義である:

public ActionResult StoreFinalized(List<FinalizedWebinar> attendees) 

しかし、私が投稿したときに、参加者のパラメータがnullであり、これはPOSTDATAに送られているものです。

[909428].ParticipantID:909428 
[909428].AffidavitRecvd:on 
[914251].ParticipantID:914251 
[914251].AffidavitRecvd:on 

この定義も試したことがあります。

public ActionResult StoreFinalized(FinalizedWebinarAttendeesList attendees) 

と出席者のウェビナーはnullです。

私はここで間違っていますか?

答えて

1

あなたのビュー:

@using (Html.BeginForm("Index")) 
{ 
<input type="text" name="Webinars[0].ParticipantID" value="1" /> 
<input type="text" name="Webinars[0].AffidavitRecvd" value="11" /> 

<input type="text" name="Webinars[1].ParticipantID" value="2" /> 
<input type="text" name="Webinars[1].AffidavitRecvd" value="22" /> 

<input type="submit" value="submit" /> 
} 

あなたのコントローラ:

[HttpPost] 
public ActionResult Index(FinalizedWebinarAttendeesList form) 
{ 
    return View(); 
} 

は、あなたが説明した同じのviewmodelを使用しています。

+0

チェックボックスの値を変更してAffidavitRecvdをboolに設定する必要がありましたが、これはうまくいきました。ありがとう。 – MB34

+0

もちろん、入力の種類を変更する必要がありますが、適切なビューを提供するために、ViewodelにはIntegerプロパティしかありません。 – yanislavgalyov