Razor Pages:内部带有局部视图的页面。如何存储部分视图的数据?

Flumoe99

大家好,我正在开发一个可以将文章添加到购物车的项目。我的购物车是部分视图。当我将一篇文章添加到我的购物车时,旧数据不会存储,并且只有一篇(新文章)文章添加到我的购物车中。

这是我的代码隐藏中的 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 方法的时间。

迈克·布林德

HTTP 是无状态的,因此在您的OnPostAddPosition方法中创建的任何状态都会在请求结束时被销毁。您必须实施策略以跨请求保持状态。Razor Pages 中有许多可用选项。您应该研究它们以确定最适合您的应用程序的一种:

https://www.learnrazorpages.com/razor-pages/state-management

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章