Я использую MVC для отображения простой формы в виде:
ViewModel:
public class CreateSaleViewModel
{
public string OrderId { get; set; }
public decimal TotalAmount { get; set; }
public bool ShowInstoreConfirmDetails { get; set; }
}
Действие контроллера:
[HttpGet]
public IActionResult CreateSale()
{
return View(new CreateSaleViewModel());
}
Вид:
@model CreateSaleViewModel
<form asp-controller="Sales" asp-action="CreateSale" method="post">
<input asp-for="OrderId" />
<input asp-for="TotalAmount" />
<button type="submit" name="CreateSale" id="CreateSale">
button
</button>
</form>
Затем я публикую сообщение в новом представлении, в котором необходимо ввести те же данные. Для этого я сохраняю старые значения в скрытых входах и предоставляю другую форму для повторного ввода данных.
ViewModel:
public class ConfirmDetailsViewModel
{
public string OrderId { get; set; }
public decimal TotalAmount { get; set; }
public string ConfirmOrderId { get; set; }
public decimal ConfirmTotalAmount { get; set; }
}
Контроллер:
[HttpPost("Confirmdetails")]
public IActionResult ConfirmDetails(CreateSaleViewModel model)
{
var viewModel = new ConfirmDetailsViewModel
{
ConfirmOrderId = model.OrderId,
ConfirmTotalAmount = model.TotalAmount,
OrderId = string.Empty,
TotalAmount = 0.0m
};
return View("ConfirmDetails", viewModel);
}
Вид:
@model ConfirmDetailsViewModel
<form asp-controller="Sales" asp-action="Summary" method="post">
<input type="hidden" value="@Model.ConfirmOrderId" id="OrderIdConfirm" />
<input type="hidden" value="@Model.ConfirmTotalAmount" id="TotalAmountConfirm" />
<input type="hidden" value="@Model.OrderId" id="banana" />
<input asp-for="OrderId" />
<input asp-for="TotalAmount" />
<button type="submit" name="CreateSale" id="CreateSale">
button
</button>
</form>
Моя проблема заключается в представлении orderDid для подтверждения подробностей, и TotalAmount сохраняет значения, опубликованные на предыдущей странице.
Я отладил контроллер и вижу, что свойства ConfirmOrderId и ConfirmTotalAmount имеют правильные значения, а также OrderId и TotalAmount - пустые слова и 0 соответственно.
Даже странно, что
<input type="hidden" value="@Model.OrderId" id="banana" />
Имеет правильное значение "".
Кто-нибудь знает, что является причиной этой проблемы?