Передача данных из представления в контроллер ASP.NET
Мне нужно передать данные из представления в контроллер и затем передать другому представлению. При получении данных из представления я получаю все значения равные 0. Помогите пожалуйста разобраться в чем проблема.
Контроллер:
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)
{
if (ModelState.IsValid)
{
calculationParameters.Calculation(pam);
return RedirectToAction("CalculationSize");
}
return View(pam);
}
public IActionResult CalculationSize(Parameters pam)
{
CalculationOfParameters calPam = new CalculationOfParameters(pam);
return View(calPam.parameters);
}
}
Представления из которого берутся данные вводимые пользователем:
@model Parameters
<div class="content">
<table cellpadding="0" cellspacing="0" width="100%">
<div class="block_content">
<form asp-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>
Класс CalculationOfParameters (здесь проводится расчет параметров по значениям полученным из представления):
public class CalculationOfParameters
{
public Parameters parameters = new Parameters();
public CalculationOfParameters(Parameters pam)
{
this.parameters = pam;
parameters.K = Math.Pow(1 - parameters.Uvyh0 / (parameters.En - parameters.U0), 2) / (2 * (parameters.Uvh1 - parameters.U0)
/ (parameters.En - parameters.U0) *
parameters.Uvyh0 / (parameters.En - parameters.U0) - Math.Pow(parameters.Uvyh0 / (parameters.En - parameters.U0), 2));
parameters.wn_ln = (2 * parameters.hd * Math.Pow(10, -9) * parameters.Cn * Math.Pow(10, -12)) /
(8.85 * Math.Pow(10, -12) * parameters.Ed * parameters.u * Math.Pow(10, -4) * parameters.t * Math.Pow(10, -6) *
(parameters.En - parameters.U0 - parameters.Uvyh1));
parameters.wk_lk = parameters.K * parameters.wn_ln;
}
}
Представление CalculationSize в которое передаются данные полученные в классе CalculationOfParameters:
@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="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="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>
</tbody>
</table>
</form>
</div>
</table>