Aspnet.Core MVC,如何绑定一组输入的列表?
Aspnet.Core MVC, how to bind a list of a group of inputs?
我正在使用 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。
不要与代码混淆。代码很简单。我想 post 我的输入带有表单标签。在 Controller 端,我想将任何类型的用户放入列表中。我没有展示模型,因为我认为这不是必需的。主要问题是如何在 BuyerModel 中获取对象列表中的#inputBuyerRow 输入? #addBuyer 按钮在代码中添加更多#inputBuyerRow 元素。会有更多的用户。
我该怎么做。我必须输入组还是其他什么?我没有找到任何例子。
我的约束是:
- 我不能使用 Ajax Jquery 或其他类似的东西。我必须使用表单标签。
- 我必须在控制器端使用列表。
编辑:在控制器中,我尝试使用字符串数组和模型获取输入,以了解视图如何发送给我。所以也不要与这段代码混淆。我只是在尝试。没什么特别的。
一般在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>
要发送模型列表,我们应该根据列表索引设置name属性,像这样: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
}
结果是这样的:
我正在使用 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。
不要与代码混淆。代码很简单。我想 post 我的输入带有表单标签。在 Controller 端,我想将任何类型的用户放入列表中。我没有展示模型,因为我认为这不是必需的。主要问题是如何在 BuyerModel 中获取对象列表中的#inputBuyerRow 输入? #addBuyer 按钮在代码中添加更多#inputBuyerRow 元素。会有更多的用户。
我该怎么做。我必须输入组还是其他什么?我没有找到任何例子。
我的约束是:
- 我不能使用 Ajax Jquery 或其他类似的东西。我必须使用表单标签。
- 我必须在控制器端使用列表。
编辑:在控制器中,我尝试使用字符串数组和模型获取输入,以了解视图如何发送给我。所以也不要与这段代码混淆。我只是在尝试。没什么特别的。
一般在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>
要发送模型列表,我们应该根据列表索引设置name属性,像这样: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
}
结果是这样的: