2017-12-04 6 views
0

asp.net 코어를 처음 사용합니다. 지금까지 읽은 적이 있었고 이제 폼의 데이터를 포스트 메소드를 통해 코드 뒤에 오브젝트로 제출하는 방법을 알게되었습니다. 괜찮아. 하지만 객체 목록을 보내는 것은 어떨까요? 내가해야 할 일은 (이 예에서는 호텔 관리실 유형 및 요율 유형의 경우) 그리드와 같은 것입니다. 객실 유형 목록이 있으며 각 객실 유형별 요금표 목록이 있습니다. 어떻게해야합니까? 내가 한 것처럼 방 유형의 이름을 전달할 수 있지만 (단 하나의 객체로만 가능함) 어떤 비율도 허용하지 않습니다.asp.net 코어 2.0에서 클라이언트 측에서 객체 목록 가져 오기

public class RateType 
    { 
     public string Name { get; set; } 
     public bool IsActive { get; set; } 
    } 

public class RoomType 
    { 
     public string Name { get; set; } 

     public List<RateType> Rates { get; set; } = new List<RateType>(); 
    } 
HomeController에서

:

public IActionResult RoomConfig() 
     { 
      return View(room); 
     } 

     [HttpGet] 
     public ViewResult SaveRoomConfig() 
     { 

      return View("RoomConfig"); 
     } 

     [HttpPost] 
     public ViewResult SaveRoomConfig(RoomType room) 
     { 

      return View("RoomConfig"); 
     } 

그리고보기 :

내가 (모델)과 같이 그것을 가지고 그래서

@model RoomType 
@{ 
    ViewData["Title"] = "RoomConfig"; 
} 

<h2>@Model.Name</h2> 

<form class="p-a-1" asp-action="SaveRoomConfig" method="post"> 
    @foreach (var item in Model.Rates) 
    { 
     <label asp-for="Name">@item.Name </label> 
     <input class="form-control" asp-for="Name" /> 
     <input asp-for="@item.IsActive" type="checkbox" /> 

    } 
    <button type="submit">Send</button> 

</form> 

, 나는 초기 개체를 보내 테스트 용으로 사전 정의 된 값이 있으며 페이지에 표시됩니다. 그런 다음 "보내기"를 클릭하면 첫 번째 객체 만 보낼 수 있습니다 (객체 매개 변수 만 있기 때문에 첫 번째 객체 만 보낼 수 있습니다.) 그래서 첫 번째 객체 만 보낼 수 있습니다. 그래도 방 유형 목록을 넣으려고했는데 하지만 그것을 어떻게 할 수 있습니까? 객체 목록을 중첩 된 다른 객체 목록과 함께 전달하십시오. 가능합니까? 하나만 전달할 가능성이있는 것은 아닙니다. 그리고 오직 하나의 객체가 있습니다.

답변

0

좋아, 나는 그것이 효과가 없다는 것을 깨달았습니다. 나는 빈리스트에 아이템을 바인딩한다는 사실을 제외하고는 모든 것을 올바르게하고있었습니다. 그래서 'foreach'대신 'for'문을 써서 인덱스에 도달했습니다. 그런 식으로 존재하지 않는 객체 대신 목록의 위치에 객체를 바인딩했습니다. :

@model RoomType 
@{ 
    ViewData["Title"] = "RoomConfig"; 
} 


<form class="p-a-1" asp-action="SaveRoomConfig" method="post"> 
    <input asp-for="Name" /> 
    @for (int i=0;i< Model.Rates.Count;i++) 
    { 
     <div class=" form-control"> 
      <label asp-for="@Model.Rates[i].Name">@Model.Rates[i].Name </label> 
      <input asp-for="@Model.Rates[i].Name" /> 
      <input asp-for="@Model.Rates[i].IsActive" type="checkbox" /> 
     </div> 
    } 
    <button type="submit">Send</button> 

</form> 

물론 누구나이 작업을 수행하는 더 좋은 방법이 있다면 나는 모든 귀입니다. :)