繁体   English   中英

将数据从返回“PartialView()”的操作方法传递到父视图 | 使用 ASP.NET 核心 MVC 和 jQuery ajax

[英]Passing data from Action Method returning "PartialView()" into the parent View | using ASP.NET Core MVC and jQuery ajax

这是我名为_ShowSingleProduct.cshtml的主视图:

<div class="col-md-7">
            <!-- Review-->
            <div class="product-review pb-4 mb-4 border-bottom">
                 //*Here I'm going to load my comments*
            </div>

            <div class="text-center">
                <button onclick="showMoreComments()" class="btn btn-outline-accent" type="button"><i class="ci-reload me-2"></i>بیشتر دیدن</button>
            </div>
</div>

我将使用ajax将我的数据(来自用户的一些评论)加载到带有class="product-review"<div>中。

这是我的 Javascript 代码:

$(function() {
     ShowComment();
});

function ShowComment() {
      $(".product-review").load("/Products/_ShowComments/"+ @Model.ProductId);
};

现在一切正常!

但是我需要使用 ajax 每次点击<button>来更新我的评论

<button onclick="showMoreComments()" class="btn btn-outline-accent" type="button">
    <i class="ci-reload me-2"></i>بیشتر دیدن</button>

这是返回局部视图的目标操作方法:

public IActionResult _ShowComments(int id, int take = 2, int pageId = 1)
{
    ViewBag.CurrnetPageId= pageId + 1;
    var comments = _productService.GetAllCommentsByProductId(id, take, pageId);
    return PartialView(comments);
}

我的问题是如何将ViewBag.Cur.netPageId的值带到我的父视图 (_ShowSingleProduct.cshtml),因为每次我需要它时,它都会返回null 我尝试了以下方式:

@{
     var currentPage=ViewBag.CurrnetPageId;
}

<script>
function showMoreComments() {
       var currentPageId =@currentPage;
       $(".product-review").load("/Products/_ShowComments?id=" + @Model.ProductId+"&pageId=" + currentPageId);
};
<script>

但仍将currentPageId变量视为null

谁能帮我?

子动作遵循与父动作不同的控制器/模型/视图生命周期。 因此,它们不共享 ViewData/ViewBag。

你可以试试这个方法。

public IActionResult _ShowComments(int id, int take = 2, int pageId = 1)
{
    ViewBag.CurrnetPageId= pageId + 1;
    var comments = _productService.GetAllCommentsByProductId(id, take, pageId);
    return PartialView(comments);
}

在您的局部视图 ( Products/_ShowComments ) 中,使用@ViewBag.Cur.netPageId接收数据

//........

// add this code to save the data
<input id="currentPageId" value=@ViewBag.CurrnetPageId type="hidden"/>
//......

最后,在父视图中加载局部视图时,使用$("#currentPageId").val()获取@ViewBag.Cur.netPageId的值

<script>
function showMoreComments() {
   $(".product-review").load("/Products/_ShowComments?id=" + @Model.ProductId +"&pageId=" + $("#currentPageId").val());
}
<script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM