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