大家好,我正在開發一個可以將文章添加到購物車的專案。我的購物車是一個部分視圖。當我將一篇文章添加到我的購物車時,舊資料不會存盤,并且只有一篇(新文章)文章添加到我的購物車中。
這是我的代碼隱藏中的 Post 代碼,我添加了一個帶有 RandomNumbers 的 Postition 進行測驗
[BindProperty]
public List<Position> ArticlePositions { get; set; } = new List<Position>();
public PartialViewResult OnPostAddPosition(List<Position> articlePositions)
{
Random myObject = new Random();
Random myObject1 = new Random();
articlePositions.Add(new Position
{
ArticleAmount = myObject1.Next(10, 100),
ArticleId = myObject.Next(10, 100)
});
var partialViewResult = new PartialViewResult()
{
ViewName = "_ArticlePositonsPartial",
ViewData = new ViewDataDictionary<List<Position>>(ViewData, articlePositions),
};
return partialViewResult;
}
這是我對模型的部分視圖:
@model List<Rechnungen.Models.Position>
<div class="tableFixHead">
<table class="table table-striped text-center table-sm ">
<thead class="table-dark ">
<tr>
<th style="width:72.5px" class="">Anzahl</th>
<th style="width:72.5px" class="">ID</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr id="">
<td style="width:72.5px" class="pt-2 ">
<span class="TBarticleAmount">@item.ArticleAmount</span>
</td>
<td style="width:72.5px" class="pt-2 ">
<span class="TBarticleType">@item.ArticleId</span>
</td>
</tr>
}
</tbody>
</table>
</div>
我在哪里渲染部分:
<div id="MyPartialView">
@{
await Html.RenderPartialAsync("_ArticlePositonsPartial", Model.ArticlePositions, ViewData);
}
</div>
我如何將位置添加到購物車:
@Html.AntiForgeryToken()
<button class="btn btn-outline-secondary" onclick="GetPartialView()"><i class="fa-solid fa-plus"></i>Hinzufügen</button>
這是我的Javascript:
function GetPartialView() {
$.ajax({
type: "POST",
url: '?handler=AddPosition',
dataType: "html",
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
success: function(data) {
$("#MyPartialView").html(data);
},
error: function(result) {
alert("fail");
}
});
}
到目前為止,我的代碼正在運行,當我在購物車中添加一些東西時,我的網站看起來像這樣 =>

當我再次單擊添加按鈕時,我的網站看起來像這樣=>

所以我的問題是沒有存盤 ArticlePositions 中的資料。當我除錯我的代碼時,ArticlePositionsNULL是呼叫 Post 方法的時間。
uj5u.com熱心網友回復:
HTTP 是無狀態的,因此在您的OnPostAddPosition方法中創建的任何狀態都會在請求結束時被銷毀。您必須實施策略以跨請求保持狀態。Razor Pages 中有許多可用選項。您應該研究它們以確定最適合您的應用程式的一種:
https://www.learnrazorpages.com/razor-pages/state-management
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/483871.html
標籤:C# asp.net-mvc 剃刀页面 部分视图
下一篇:密碼的資料型別模型驗證
