Метод контроллера не перехватывает маршруты объектов из перенаправления - PullRequest
0 голосов
/ 05 февраля 2019

Я отправляю данные из формы в мой Test метод, и данные есть,

Если произошла какая-либо ошибка, то я сопоставляю свои ModelInput с Model, а затем явыполняю перенаправление на MyView с данными, отправленными через маршруты объектов.По какой-то причине в MyView параметр input равен нулю, даже если input в Test имел правильные значения

Есть идеи, почему после перенаправления мои данные (входной параметр) теряются?

Кстати: Guid?Идентификатор отправляется правильно

public IActionResult MyView(Guid? id, Model input = null)
{
    // after redirect input is empty
    (...)
}

__

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Test(Guid id, ModelInput user_input)
{
    (...)
    if (error)
    {
        var input = new Model
        {
            FirstName = user_input.FirstName,
            SecondName = user_input.SecondName
        }

        return RedirectToAction(nameof(MyView), new { id, input });
    }
}

1 Ответ

0 голосов
/ 05 февраля 2019

Проблема с передачей объекта в качестве параметра маршрута заключается в том, что полученный URL создается путем вызова ToString для каждого параметра, и вместо input.FirstName=value&input.SecondName=value вы получаете input=YourSolution.Controllers.YourController+Model, что, очевидно, недопустимо.В вашем случае следующий код будет достаточно для решения проблемы

return RedirectToAction(nameof(MyView), new { id, input.FirstName, input.SecondName });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...