У меня есть некоторые данные, которые я отображаю в таблице HTML
в моем View
. Теперь я хочу, чтобы при нажатии кнопки (скажем, кнопки SUBMIT
) я хотел отправить данные в метод POST контроллера, чтобы сохранить данные в базе данных.
Я пытался получить данные, используя технику Model Binding
, однако объект ViewModel
в методе POST
выглядит как null
.
Модель и модель представления
// Model Model.cs
public class MyModel
{
[Key]
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
...
}
// ViewModel MyViewModel.cs
public class MyViewModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
...
public List<MyModel> MyModelList { get; set; }
}
// ViewModel VMList.cs
public class VMList
{
public List<MyViewModel> MyViewModelList { get; set; }
}
Итак, у меня есть Model
с именем MyModel.cs
, у которого есть таблица в базе данных. Затем у меня есть ViewModel
с именем MyViewModel.cs' that has the same columns as the
Модель , in addition to some columns, plus a
Список of
MyModel type. Then, there is another
ViewModel called
VMList.cs that contains a list of tuples of
MyViewModel type. This
ViewModel is passed to the
View`.
Представление строится следующим образом:
View
@model ...Models.ViewModels.VMList
...
<form asp-action="MyAction" asp-controller="MyController" id="myForm">
<div>
<button type="submit" value="submit" id="submitButton">Submit</button>
<table id="myTable">
@foreach(var item in Model.MyViewModelList)
{
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Header 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>
@item.FirstName
</td>
<td>
@item.LastName
</td>
<td>
@item.Header3
</td>
</tr>
@if(item.subList != null && item.subList.Count() != 0)
{
<thead>
<tr>
<th>SubList Header 1</th>
<th>SubList Header 2</th>
<th>SubList Header 3</th>
</tr>
</thead>
<tbody>
@foreach(var subItem in item.subList)
{
<tr>
<td>
@subItem.SubListHeader1
</td>
<td>
@subItem.SubListHeader2
</td>
<td>
@subItem.SubListHeader3
</td>
</tr>
}
</tbody>
}
}
</table>
</div>
</form>
Метод POST
[HttpPost]
public IActionResult MyAction(VMList vmListObject)
{
return View();
}
Как я могу получить данные, показанные в таблицах в View
обратно в Controller
?