簡體   English   中英

Aspnet.Core MVC,如何綁定一組輸入的列表?

[英]Aspnet.Core MVC, how to bind a list of a group of inputs?

我正在使用 aspnetcore mvc,dotnet 版本 6。我試圖在視圖中獲取輸入。 下面的代碼我試圖讓買家用戶和送貨用戶出現在一個列表中。 但我無法將它們綁定到 controller 的 model 列表中。

這是我的代碼:

public async Task<IActionResult> SendMainFlow(List<IFormFile> files, string[] DeliveryUsers, List<BuyerUsers> BuyersModel)
    {
        
        return BadRequest();
    }

從觀點來看:

<form class="col-12 col-md-6" method="POST" action="/WorkManagement/SendMainFlow" enctype="multipart/form-data">
    <div class="">

        <label>
            Dosyalar:
        </label>
        <input type="file"
               class=" col-12"
               name="files"
               multiple/>
    </div>
    <hr class="row " />
    <div class="row m-1">
        <label class="col-12 text-primary">
            Satın alacak kişiler:
        </label>
        <div id="BuyerInputArea" class="col-lg-12">
            <div class="inputBuyerRow first-input">
                <div class="input-group mb-3">
                    <input type="text" name="BuyerUserName" class="form-control m-input col" placeholder="İsim" autocomplete="off">
                    <input type="text" name="BuyerUserLastName" class="form-control m-input col" placeholder="Soyisim" autocomplete="off">
                    <input type="text" name="BuyerUserMail" class="form-control m-input col" placeholder="E-Posta" autocomplete="off">
                    <div class="input-group-append">
                        <button id="removeBuyer" type="button" class="btn btn-danger">Kaldır</button>
                    </div>
                </div>
            </div>
            
            <button id="addBuyer" type="button" class="btn btn-info">Kişi Ekle</button>
        </div>
    </div>
    <hr class="row " />
    <div class="row m-1">
        <label class="col-12 text-primary">
            Dağıtılacak kişiler:
        </label>
        <div id="DeliveryInputArea" class="col-lg-12">
            <div id="DeliverySignerRow">
                <div class="input-group mb-3">
                    <input type="text" name="DeliveryUserMail" class="form-control m-input col" placeholder="Mail" autocomplete="off">
                    <div class="input-group-append">
                        <button id="removeRow" type="button" class="btn btn-danger">Kaldır</button>
                    </div>
                </div>
            </div>

            <div id="newRow"></div>
            <button id="addDealer" type="button" class="btn btn-info">Kişi Ekle</button>
        </div>
    </div>
    <div class="row m-2">
        <button class="col-12 btn btn-info" type="submit">
            İŞLEM BAŞLAT
        </button>
    </div>

</form> 

我可以在這里獲得任何類型的用戶。 我的意思是買家或送貨用戶。 但我想獲取用戶列表。 而且我的代碼還嘗試在#BuyerUserArea 中動態添加#inputBuyerRow。

不要與代碼混淆。 代碼很簡單。 我想用表單標簽發布我的輸入。 在 Controller 方面,我想將任何類型的用戶放入列表中。 我沒有展示模型,因為我認為這不是必需的。 主要問題是我如何在BuyerModel 中獲取#inputBuyerRow 輸入,例如對象列表? #addBuyer 按鈕在代碼中添加更多#inputBuyerRow 元素。 會有更多的用戶。

我怎樣才能做到這一點。 我必須輸入組或其他什么嗎? 我沒有找到任何例子。

我的限制是:

  • 我不能使用 Ajax Jquery 或其他類似的東西。 我必須使用表單標簽。
  • 我必須在 controller 方面使用列表。

編輯:在 controller 中,我嘗試使用字符串數組和 model 獲取輸入以了解視圖如何發送給我。 所以也不要與這段代碼混淆。 我只是在嘗試。 沒什么特別的。

通常,在MVC應用程序中,提交表單時,在action方法中,會通過html元素的name屬性獲取數據。 您可以按名稱訪問表單字段,從視圖到 controller

在視圖中

要傳遞字符串數組,元素應該使用相同的名稱屬性。 像這樣: name="DeliveryUserMail"

<div id="DeliveryInputArea" class="col-lg-12">
            <div id="DeliverySignerRow">
                <div class="input-group mb-3">
                    <input type="text" name="DeliveryUserMail" class="form-control m-input col" placeholder="Mail" autocomplete="off">
                    <input type="text" name="DeliveryUserMail" class="form-control m-input col" placeholder="Mail" autocomplete="off">
                    <div class="input-group-append">
                        <button id="removeRow" type="button" class="btn btn-danger">Kaldır</button>
                    </div>
                </div>
            </div>

發送 model 的列表,我們應該根據列表索引設置名稱屬性,如: BuyersModel[0].BuyerUserName

 <div class="input-group mb-3">
                    <input type="text" name="BuyersModel[0].BuyerUserName" class="form-control m-input col" placeholder="İsim" autocomplete="off">
                    <input type="text" name="BuyersModel[0].BuyerUserLastName" class="form-control m-input col" placeholder="Soyisim" autocomplete="off">
                    <input type="text" name="BuyersModel[0].BuyerUserMail" class="form-control m-input col" placeholder="E-Posta" autocomplete="off">
                    </div >
                    <div class="input-group mb-3">
                    <input type="text" name="BuyersModel[1].BuyerUserName" class="form-control m-input col" placeholder="İsim" autocomplete="off">
                    <input type="text" name="BuyersModel[1].BuyerUserLastName" class="form-control m-input col" placeholder="Soyisim" autocomplete="off">
                    <input type="text" name="BuyersModel[1].BuyerUserMail" class="form-control m-input col" placeholder="E-Posta" autocomplete="off">
                    </div >

在 Controller

[HttpPost]
    public ActionResult Create2(string[] DeliveryUserMail, List<BuyerUsers> BuyersModel)
    {
        //Access string, list here
     }

結果是這樣的:

在此處輸入圖像描述

暫無
暫無

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

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