.Net MVC: Как с откорректировать поля
Как можно отправить форму в POST запросе, на другую модель данных (не та котарая во view)?
У меня есть UserModel и FilterRequest модели. Чтобы отфильтровать данные мне нужно послать Post запрос на IndexFilter с FilterRequest моделью фильтраций?
Помогите Пожалуйста как мне это сделать?
View/User/Index.cshtml
@model UserModel
@using (Html.BeginForm("IndexFilter", "User", FormMethod.Post))
{
<input type="hidden" name ="pageNumber" value="@Model.PaginationModel.PageNumber"/>
<div class="form-row">
<div class="col">
<label class="control-label">First Name</label>
@Html.TextBoxFor(m => m.FilterData.FirstName, new { @class = "form-control" })
</div>
<div class="col">
<label class="control-label">Last Name</label>
@Html.TextBoxFor(m => m.FilterData.LastName, new { @class = "form-control" })
</div>
<input type="submit" value="Filter" class="btn btn-primary" />
</div>
}
UserController.cs
[HttpPost]
public IActionResult IndexFilter([FromBody] FilterRequest request)
{
}
UserModel.cs
public class UserModel
{
public IList<User> Users{ get; set; }
public PaginationModel PaginationModel { get; set; }
public FilterData FilterData { get; set; }
}
FilterRequest.cs
public class FilterRequest
{
public int PageNumber { get; set; } = 1;
public FilterData FilterData { get; set; }
}
На сервер уходит Post запрос, с Form Data pageNumber=1&FilterData.FirstName=&FilterData.LastName=Nikita&__RequestVerificationToken=Token
Сервер ответил 415.
Ответы (1 шт):
Можно создать модель данных соответствующую приходящему в котроллер запросу, а потом смапить её в методе контроллера на ту модель которая вам нужна.
Чтобы убедиться, что на стороне клиента формируется подходящий запрос, можно воспользоваться инструментами для разработчика встроенными в браузер. Например в Chrome это вкладка Network инструмента DevTools, там можно поставить галочку Preserve log, сделать запрос и выбрать его в списке, а затем сравнить содержимое и структуру запроса с моделью на стороне сервера.