Передача объекта от представления к контроллеру и от него обратно в представление ASP.NET Core

Мне нужно сделать обработку вводимых данных через передачу объекта с параметрами.

Я сделал передачу из представления в контроллер вводимых данных и затем передачу рассчитанных по этим данным параметров из контроллера в представление с помощью RedirectToAction. Используются 3 представления в первом форма с вводимыми данными, во второй - вывод результата и форма с дополнительными параметрами, в третьем - вывод окончательных результатов. Сейчас у меня работает только передача объекта с параметрами из первого представления в контроллер и вывод результатов и запись дополнительных параметоров во 2-ом представлении.

Контроллер:

public class CalculationController: Controller
{
    private readonly ICalculationParameters calculationParameters;
    private Parameters pam = new Parameters();

    public CalculationController(ICalculationParameters calculationParameters)
    {
        this.calculationParameters = calculationParameters;
    }

    public IActionResult CalculationParameters()
    {
        return View();
    }

    [HttpPost]
    public ActionResult CalculationParameters(Parameters pam, string action)
    {
        if (ModelState.IsValid)
        {
            calculationParameters.Calculation(pam);
            return RedirectToAction("CalculationSize", pam);
        }
        return View(pam);
    }

    public ActionResult CalculationSize(Parameters pam)
    {
        CalculationOfParameters calPam = new CalculationOfParameters(pam);
        this.pam = calPam.parameters;
        return View(calPam.parameters);
    }

    public ActionResult Calculation(Parameters pam)
    {
        CalculationOfSize calPam = calPam = new CalculationOfSize(pam);
        return View(calPam.parameters);
    }
}

Представление 1-ое:

@model Parameters

<div class="content">
    <table cellpadding="0" cellspacing="0" width="100%">
        <div class="block_content">
                <form action="CalculationParameters" method="POST">
                    <table align="center" class="content_fields">
                        <tbody>
                            <tr>
                                <td>
                                    <div class="form-group">
                                        <label>Напряжение питания инвертора</label>
                                        <div class="col-12">
                                            <input asp-for="En" class="form-control" />
                                            <span asp-validation-for="En" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                                <td>
                                    <div class="form-group">
                                        <label>Внешняя нагрузка</label>
                                        <div class="col-12">
                                            <input asp-for="Cn" class="form-control" />
                                            <span asp-validation-for="Cn" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <div class="form-group">
                                        <label>Высокий уровень входного напряжения</label>
                                        <div class="col-12">
                                            <input asp-for="Uvh1" class="form-control" />
                                            <span asp-validation-for="Uvh1" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                                <td>
                                    <div class="form-group">
                                        <label>Толщина диэлектрика</label>
                                        <div class="col-12">
                                            <input asp-for="hd" class="form-control" />
                                            <span asp-validation-for="hd" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <div class="form-group">
                                        <label>Низкий уровень входного напряжения</label>
                                        <div class="col-12">
                                            <input asp-for="Uvh0" class="form-control" />
                                            <span asp-validation-for="Uvh0" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                                <td>
                                    <div class="form-group">
                                        <label>Время включения</label>
                                        <div class="col-12">
                                            <input asp-for="t" class="form-control" />
                                            <span asp-validation-for="t" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <div class="form-group">
                                        <label>Высокий уровень выходного напряжения</label>
                                        <div class="col-12">
                                            <input asp-for="Uvyh1" class="form-control" />
                                            <span asp-validation-for="Uvyh1" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                                <td>
                                    <div class="form-group">
                                        <label>Диэлектрическая проницаемость диэлектрика</label>
                                        <div class="col-12">
                                            <input asp-for="Ed" class="form-control" />
                                            <span asp-validation-for="Ed" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <div class="form-group">
                                        <label>Низкий уровень выходного напряжения</label>
                                        <div class="col-12">
                                            <input asp-for="Uvyh0" class="form-control" />
                                            <span asp-validation-for="Uvyh0" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                                <td>
                                    <div class="form-group">
                                        <label>Подвижность электронов</label>
                                        <div class="col-12">
                                            <input asp-for="u" class="form-control" />
                                            <span asp-validation-for="u" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <div class="form-group">
                                        <label>Пороговое напряжение</label>
                                        <div class="col-12">
                                            <input asp-for="U0" class="form-control" />
                                            <span asp-validation-for="U0" class="text-danger"></span>
                                        </div>
                                    </div>
                                </td>
                                <td>
                                    <input class="btn btn-success" type="submit" value="Рассчитать" />
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </form>
            </div>
    </table>
</div>

Представление 2-ое:

@model Parameters

<h3>Результаты</h3>
<p>
    <font>
        Отношение крутизны характеристики ключевого МДП транзистора к соответствующей характеристике нагрузочного МДП транзистора Kк / Kн = @Model.K
    </font>
</p>
<p>
    <font>
        Отношение wн / lн для нагрузочного МДП транзистора = @Model.wn_ln
    </font>
</p>
<p>
    <font>
        Отношение wk / lk для ключевого МДП транзистора = @Model.wk_lk
    </font>
</p>
<p>
    <font>
        Введите минимально возможные при данной технологии значения lк и wн
    </font>
</p>
<table cellpadding="0" cellspacing="0" width="100%">
    <div class="block_content">
        <form asp-action="CalculationSize" method="post">
            <table align="center" class="content_fields">
                <tbody>
                    <tr>
                        <td>
                            <div class="form-group">
                                <label>Длина ключевого транзистора</label>
                                <div class="col-12">
                                    <input asp-for="lk" class="form-control" />
                                    <span asp-validation-for="lk" class="text-danger"></span>
                                </div>
                            </div>
                        </td>
                        <td>
                            <div class="form-group">
                                <label>Ширина нагрузочного транзистора</label>
                                <div class="col-12">
                                    <input asp-for="wn" class="form-control" />
                                    <span asp-validation-for="wn" class="text-danger"></span>
                                </div>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input class="btn btn-success" type="submit" value="Рассчитать" />
                        </td>
                    </tr>
                </tbody>
            </table>
        </form>
    </div>
</table>

Представление 3-е:

@model Parameters

<p>
    <font>
        Значения нагрузочного МДП транзистора lн = @Model.ln, wн = @Model.wn
    </font>
</p>
<p>
    <font>
        Значения ключевого МДП транзистора lк = @Model.lk, wк = @Model.wk
    </font>
</p>

Мне нужно получить дополнительные значения из 2-го предсталения и провести дополнительный расчет с выводом значений в 3-е представление (вот тут и вся проблема, когда я нажимаю на кнопку, то получаю только дополнительные значения, а старые теряются).

  1. Как можно передать данные введенные во 2-ом представлении в контроллер и затем в 3-е представление вывести результат?
  2. И как можно объединить все представления в один? Сейчас думаю сделать с помощью скрытого атрибута и затем по нажатию кнопки показывать их, но встает вопрос как можно передать данные от представления в контроллер и затем от контроллера вернуть результат (рассчитанный по переданным параметрам).

Ответы (0 шт):