2016-07-14 4 views
4

뷰에 모델을 반환하는 작업이 있습니다 (IEnumerable<T>). 뷰에서는 foreach를 사용하여 목록을 반복합니다. T 유형에는 Amount라는 속성이 있습니다.ASP.NET 코어 1.0 POST IEnumerable ~ 컨트롤러

이제 SAVE 버튼을 클릭하면 모델 (IEnumerable)을 작업에 POST하려고합니다. IEnumerbale 항목은 해당 속성 Amount에 올바른 값이 있어야합니다. 나는 그것을 제출하면

enter image description here

는 행동 모델은 null입니다.

@model IEnumerable<Product> 


<form asp-controller="Home" asp-action="Order" method="post" role="form"> 
     @foreach (var product in Model) 
     { 
      <div> 
        <span>@product.Title</span> 
        <input asp-for="@product.Amount" type="text"> 
      </div> 
     } 
    <button type="submit">SAVE</button>   

</form> 

컨트롤러 사후 조치 : :

[HttpPost]  
    public async Task<IActionResult> Order(IEnumerable<Product> model) 
    { 

    } 

답변

2

이 문제는보기에 @model IEnumerable<Product>했다 IEnumerable<T>을 테스트하기 위해

IEnumerable<Produt>

public class Product 
{ 

    public string Title { get; set; } 
    public int Amount { get; set; } 
} 

뷰 디스플레이 제품이다. 응용 프로그램/x를 - www가 : 그것은 마지막으로 MVC 양식 게시물 (예에 대한 이해 직렬화 형식으로 귀결

@model List<Product> 


<form asp-controller="Home" asp-action="Order" method="post" role="form"> 
    @for (int i = 0; i < Model.Count(); i++) 
    { 
     <div> 
       <span>@Model[i].Title</span> 
       <input asp-for="@Model[i].Amount" type="text"> 
     </div> 
    } 

SAVE

1

을 : 나는 목록 및 루프 대신에 사용하는 것을 변경 -form-urlencoded).

액션 매개 변수 : IEnumerable<Product> products
요청 형식 : [0].Title=car&[0].Amount=10.00&[1].Title=jeep&[1].Amount=20.00


액션 매개 변수 : Manufacturer manufacturerManufacturer 유형은 당신이 TagHelpers 또는 HtmlHelpers를 사용할 때마다 그래서 당신은 다음과 같은 방법으로 양식을 렌더링하려고 있는지 확인 아래처럼 :

public class Manufacturer 
{ 
    public string Name { get; set; } 
    public List<Product> Products { get; set; } 
} 

public class Product 
{ 
    public string Title { get; set; } 
    public int Amount { get; set; } 
} 

요청 형식 : Name=FisherPrice&Products[0].Title=car&Products[0].Amount=10.00&Products[1].Title=jeep&Products[1].Amount=20.00


동작 파라미터 : IEnumerable<string> states
요청 형식 1 : states=wa&states=mi&states=ca
요청 format2 : states[0]=wa&states[1]=mi&states[2]=ca


동작 파라미터 : Dictionary<string, string> states
요청 형식 : states[wa]=washington&states[mi]=michigan&states[ca]=california