Привязка модели с использованием @model List<API_VM>
вместо @model API_List
.
@model List<API_VM>
@{
ViewData["Title"] = "UrunlerListe";
Layout = null;
}
<form class="form-horizontal" method="post" asp-action="UrunPost">
<table class="table table-striped">
<tr>
<th>Product Name</th>
</tr>
@for (int i = 0; i < Model.Count; i++)
{
<tr>
<td>
<input type="text" asp-for="@Model[i].UrunAdi" value="@Model[i].UrunAdi" />
</td>
</tr>
}
</table>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Submit</button>
</div>
</div>
</form>
В контроллере вы можете использовать List<API_VM>
.
[HttpPost]
public ActionResult UrunPost(List<API_VM> model)
{
API_List list = new API_List();
list.ApiList = model;
return View("~/Views/API_VMs/Index.cshtml", list);
}
Скриншоты теста :
введите описание изображения здесь
ОБНОВЛЕНИЕ
Вы можете использовать IFormCollection для проверки разницы типа возвращаемого значения от FOREACH
и FOR
l oop.
[HttpPost]
public string UrunPost(IFormCollection collection)
{
//
}
И вот еще одно решение, которое также может анализировать тип, но не рекомендует если у класса слишком много атрибутов для приведения.
[HttpPost]
public ActionResult UrunPost(IFormCollection collection)
{
var apivms = FormCollectionToAPIVM(collection);
return View("~/Views/API_VMs/Index.cshtml", apivms);
}
private API_List FormCollectionToAPIVM(IFormCollection formCollection)
{
API_List apis = new API_List();
for (var i = 0; i < formCollection.Count; i++)
{
string key = $"ApiList[{i}].UrunAdi";
if (formCollection.ContainsKey(key)) {
var item = new API_VM();
item.UrunAdi = formCollection[key];
apis.ApiList.Add(item);
}
}
return apis;
}