0

我正在使用 aspnetcore mvc,dotnet 版本 6。我试图在视图中获取输入。下面的代码我试图让买家用户和送货用户出现在一个列表中。但我无法将它们绑定到控制器的模型列表中。

这是我的代码:

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。

不要与代码混淆。代码很简单。我想用表单标签发布我的输入。在控制器方面,我想将任何类型的用户放入列表中。我没有展示模型,因为我认为这不是必需的。主要问题是我如何在BuyerModel 中获取#inputBuyerRow 输入,例如对象列表?#addBuyer 按钮在代码中添加更多#inputBuyerRow 元素。会有更多的用户。

我怎样才能做到这一点。我必须输入组或其他什么吗?我没有找到任何例子。

我的限制是:

  • 我不能使用 Ajax Jquery 或其他类似的东西。我必须使用表单标签。
  • 我必须在控制器端使用列表。

编辑:在控制器中,我尝试使用字符串数组和模型获取输入,以了解视图如何发送给我。所以也不要与这段代码混淆。我只是在尝试。没什么特别的。

4

1 回答 1

1

一般在MVC应用中,提交表单时,在action方法中,会通过html元素的name属性获取数据。您可以从视图到控制器按名称访问表单字段

在视图中

要传递字符串数组,元素应该使用相同的名称属性。像这样: 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>

要发送模型列表,我们应该根据列表索引设置名称属性,如: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 >

在控制器中

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

结果是这样的:

在此处输入图像描述

于 2022-01-07T03:07:57.373 回答