Razor Pages:内部有部分视图的页面。如何为部分视图存储我的数据?
Razor Pages: Page with partialview inside. How can i store my Data for the partialview?
大家好,我正在做一个可以将文章添加到购物车的项目。我的购物车是 partialview.When 我在购物车中添加了一篇文章旧数据未存储,只有一篇(新文章)文章添加到我的购物车中。
这是我代码隐藏中 Post 的代码 我正在添加一个 Post 带有随机数的 ition 用于测试
[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 中的数据。当我调试我的代码时,当调用 Post 方法时,ArticlePositions 是 NULL
。
HTTP 是无状态的,因此在您的 OnPostAddPosition
方法中创建的任何状态都会在请求结束时销毁。您必须实施策略以跨请求保持状态。 Razor Pages 中有许多选项可用。您应该研究它们以确定最适合您的应用程序:
https://www.learnrazorpages.com/razor-pages/state-management
大家好,我正在做一个可以将文章添加到购物车的项目。我的购物车是 partialview.When 我在购物车中添加了一篇文章旧数据未存储,只有一篇(新文章)文章添加到我的购物车中。
这是我代码隐藏中 Post 的代码 我正在添加一个 Post 带有随机数的 ition 用于测试
[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 中的数据。当我调试我的代码时,当调用 Post 方法时,ArticlePositions 是 NULL
。
HTTP 是无状态的,因此在您的 OnPostAddPosition
方法中创建的任何状态都会在请求结束时销毁。您必须实施策略以跨请求保持状态。 Razor Pages 中有许多选项可用。您应该研究它们以确定最适合您的应用程序:
https://www.learnrazorpages.com/razor-pages/state-management