簡體   English   中英

ASP.NET Core 1.0 POST IEnumerable <T> 到控制器

[英]ASP.NET Core 1.0 POST IEnumerable<T> to controller

我有一個動作,返回一個模型到視圖IEnumerable<T> 在視圖中,我使用foreach遍歷列表。 T類型具有名為Amount的屬性。

現在當我單擊SAVE按鈕時,我想將模型(IEnumerable)發布到一個動作。 IEnumerbale項目,其屬性Amount應包含正確的值。

在此輸入圖像描述

當我提交它時,在動作中,模型為空。

為了測試IEnumerable<T>IEnumerable<Produt>

public class Product
{

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

查看顯示產品:

 @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)
    {

    }

問題是@model IEnumerable<Product> 我將其更改為List並使用for循環:

@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>
   }

它最終歸結為MVC理解表單帖子的序列化格式(例如:application / x-www-form-urlencoded)。 因此,無論何時使用TagHelpersHtmlHelpers ,請確保嘗試以下列方式呈現表單:

操作參數: IEnumerable<Product> products
請求格式: [0].Title=car&[0].Amount=10.00&[1].Title=jeep&[1].Amount=20.00


操作參數: Manufacturer manufacturer ,其中Manufacturer類型如下所示:

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 ca.
請求格式2: states[0]=wa&states[1]=mi&states[2]=ca


動作參數: Dictionary<string, string> states
請求格式: states[wa]=washington&states[mi]=michigan&states[ca]=california

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM