2017-09-10 13 views
0

をモーダルにする私は私のモーダルにオブジェクトを渡す必要があります。ASP.Net MVC 5渡すデータ

@for (int i = 0; i < @Model.Count; i++) 
{ 
    <div id="contentDiv" style="margin: 10px"> 
     <div class="form-group"> 
      <div> 
       DAY : @Model[i].Day.Day/Hour : @Model[i].Hour 
      </div> 
      <div class="form-group"> 

       <button id="reservationButton" class="btn-default btn-lg" disabled="@Model[i].IsHourTaken()" onclick="@($"OpenModalPopUp('{i}')");">Book</button> 
      </div> 
     </div> 
    </div> 
} 

私のjs:

function OpenModalPopUp(id) { 
    $('#myModal').modal(); 
}; 

と私のモーダル:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" 
aria-labelledby="myModalLabel"> 
<div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" 
        aria-label="Close"><span aria-hidden="true">&times;</span></button> 
      <h4 class="modal-title" id="myModalLabel">Book this hour!</h4> 
     </div> 
     <div class="modal-body"> 
      <div> 
       <div> 
        <div class="row"> 
         <b>Day:</b> 
         <div class="col-lg-5"> 
          <span class="reservationDay"> @Model[indexOftheDay].Day </span> 
         </div> 
        </div> 
        <div class="row"> 
         <b>Hour:</b> 
         <div class="col-lg-5"> 
          <span class="reservationHour"> @Model[indexOftheDay].Hour </span> 
         </div> 
        </div> (......) 

私の問題は、ここで私は私にindexOftheDayを渡す方法を知らない@Model[indexOftheDay].Dayある今の私はこのような何かを持っていますモーダル。

ありがとうございます!

+0

? 'Model'で各項目のモーダルを作成するのか、それとも' modal'を1つ持っていて、クリックに基づいてモーダルを更新したいのですか? – adiga

+0

私は部分的なビューを持っていない、モーダルは、私のメインview.Iに直接ある1個のモーダルを持っていると私はクリック – Bourni

+0

に基づいて私のモーダルを更新したいその後マソウドSadeghiの答えはあなたのための – adiga

答えて

0

このようなあなたのモデル場合:

//TestModel: Name of your model 
public class TestModel 
    { 
     public int Id { get; set; } 
     public DateTime Day { get; set; } 
     public DateTime Hour { get; set; } 

     public bool IsHourTaken() 
     { 
      //your code 
      return false; 
     } 
    } 

は、あなたのコントローラが好き必要があります。

//HomeController: name of your controller 
public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      //get list from db or ... 
      List<TestModel> models = new List<Models.TestModel>() 
      { 
       new Models.TestModel { Day = DateTime.Now, Hour = DateTime.Now, Id = 1}, 
       new Models.TestModel { Day = DateTime.Now, Hour = DateTime.Now, Id = 2}, 
       new Models.TestModel { Day = DateTime.Now, Hour = DateTime.Now, Id = 3}, 
      }; 

      return View(models); 
     } 

     public ActionResult Details(int Id) 
     { 
      //find item from db or ... 
      var model = new Models.TestModel { Day = DateTime.Now, Hour = DateTime.Now, Id = 1 }; 
      return PartialView("_ModalView", model); 
     } 
    } 

をあなたのビューが好きでなければなりません:

@model IEnumerable<WebApplication4.Models.TestModel> 
@foreach (var item in Model) 
{ 
    <div id="contentDiv" style="margin: 10px"> 
     <div class="form-group"> 
      <div> 
       DAY : @item.Day 
      </div> 
      <div class="form-group"> 
       <button id="reservationButton" data-id='@item.Id' class="btn-default btn-lg" disabled='@item.IsHourTaken()'>Book</button> 
      </div> 
     </div> 
    </div> 
} 

<script> 
    var detailUrl = '/Home/Details'; 
    $(function() { 
     $(".btnDetail").click(function() { 
      var $buttonClicked = $(this); 
      var id = $buttonClicked.attr('data-id'); 
      var options = { "backdrop": "static", keyboard: true }; 
      $.ajax({ 
       type: "GET", 
       url: detailUrl, 
       contentType: "application/json; charset=utf-8", 
       data: { "Id": id }, 
       datatype: "json", 
       success: function (data) { 
        debugger; 
        $('#myModalContent').html(data); 
        $('#myModal').modal(options); 
        $('#myModal').modal('show'); 

       }, 
       error: function() { 
        alert("Dynamic content load failed."); 
       } 
      }); 
     }); 
    }); 

</script> 

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" 
    aria-labelledby="myModalLabel"> 
    <div id='myModalContent'></div> 
</div> 

、あなたがこのようPartialViewを持っている必要があります。

@model WebApplication4.Models.TestModel 
<div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" 
        aria-label="Close"> 
       <span aria-hidden="true">&times;</span> 
      </button> 
      <h4 class="modal-title" id="myModalLabel">Book this hour!</h4> 
     </div> 
     <div class="modal-body"> 
      <div> 
       <div> 
        <div class="row"> 
         <div class="col-lg-5"> 
          <b> 
           Day: 
           <span class="reservationDay"> @Model.Day </span> 
          </b> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-lg-5"> 
          <b> 
           Hour: 
           <span class="reservationHour">@Model.Hour </span> 
          </b> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
+0

<ボタンID =「reservationButton」動作するはずですクラス= "BTNデフォルトBTN-LG" のonclick = "@($" OpenModalPopUp({@モデル[I] .GetDay()}、{@Model [I] .GetHour()} ') ");" >書籍 –

+0

@Bourniあなたの2番目の答えが質問の場合、このコメントはそのコメントです。 –

0

ありがとうございます!

<button id="reservationButton" class="btn-default btn-lg" disabled="@Model[i].IsHourTaken()" onclick="@($"OpenModalPopUp('{@Model[i].GetDay()}')");">Book</button> 

JS: は、私はこのようにそれを行うために管理

function OpenModalPopUp(reservationDay) { 
    $('.reservationDay').text(reservationDay); 
    $('#myModal').modal(); 
}; 

と私のモーダル

<div class="modal-body"> 
      <div> 
       <div class="container-fluid"> 
        <div class="row"> 
         <div class="col-xs-3"> 
          <b>Day</b> 
         </div> 
         <div class="col-xs-9"> 
          <span class="reservationDay"/> 
         </div> 
        </div> 

生憎次の問題で、私はある直面しているエラー(何らかの理由:一定の値が予想される...)私は私の関数に2つのパラメータを渡すことはできません:(私の更新機能は、次のようになります。

function OpenModalPopUp(reservationDay,reservationHour) { 
     $('.reservationDay').text(reservationDay); 
     $('.reservationHour').text(reservationHour); 
     $('#myModal').modal(); 
    }; 
`modal`部分図がメインビューでレンダリングされ