我需要ViewData["CurrnetPageId"]在其父視圖中獲取回傳部分視圖的操作方法內部的 my 值。
我呼叫的父操作方法ShowSingleProduct如下所示:
[Route("/Single/{id}")]
public IActionResult ShowSingleProduct(int id)
{
var product = _productService.GetProductById(id);
if (product.DiscountId != null)
{
ViewData["PriceWithDiscount"] = _discountService.GetPriceAfterDiscount(product.Price, product.Discount.PercentValue);
}
else
{
ViewData["PriceWithDiscount"] = 0;
}
return View(product);
}
并且有一個稱為_ShowComments回傳的子操作PartialView():
public IActionResult _ShowComments(int id, int take = 2, int pageId = 1)
{
ViewData["CurrnetPageId"]= pageId;
var comments = _productService.GetAllCommentsByProductId(id, take, pageId);
return PartialView(comments);
}
當我需要ViewData["CurrnetPageId"]= pageId;在子視圖中獲得值時,在父視圖中,將null值設定為ViewData["CurrnetPageId"]= pageId;!!
我通過使用 jQuery/ajax 進行了嘗試,如下所示(這是在父視圖中ShowSingleProduct.cshtml):
@{
var currentPage = ViewData["CurrnetPageId"];
}
.
.
<div class="text-center">
<button onclick="showMoreComments(@currentPage)" class="btn btn-outline-accent" type="button"><i class="ci-reload me-2"></i> See More.. </button>
</div>
.
.
function showMoreComments(id) {
$.ajax({
url: "/Products/_ShowComments",
type: "get",
dataType: "html",
data: { id:@Model.ProductId, pageId: id }
}).done(function (res) {
$(".product-review").html(res);
});
<script>
</script>
任何人都可以幫忙嗎?
uj5u.com熱心網友回復:
ViewData 僅在頁面渲染時有效。第一次渲染父視圖時,它沒有任何價值。當你點擊按鈕時,雖然它設定了值,但正如我之前所說,ajax默認不會更新整個頁面,你在這里使用$(".product-review").html(res)更新元素中的資料。所以只有這個元素中的代碼會被更新。其他元素將保留之前的值。
我建議您使用localStorage來存盤客戶端資料。
這是您可以遵循的簡單演示:
看法:
<div class="text-center">
<button onclick="showMoreComments()" class="btn btn-outline-accent" type="button"><i class="ci-reload me-2"></i> See More.. </button>
</div>
<div class="product-review">
</div>
@section Scripts
{
<script>
localStorage.setItem("pageId",1);
function showMoreComments() {
var id =parseInt(localStorage.getItem("pageId"));
$.ajax({
url: "/Products/_ShowComments",
type: "get",
dataType: "html",
data: { id:@Model.ProductId, pageId: id }
}).done(function (res) {
id=id 1;
localStorage.setItem("pageId",id);
console.log(localStorage.getItem("pageId"));
$(".product-review").html(res);
});
}
</script>
}
控制器:
public IActionResult _ShowComments(int id, int take = 2, int pageId = 1)
{
//ViewData["CurrnetPageId"] = pageId;
var comments = _productService.GetAllCommentsByProductId(id, take, pageId);
return PartialView(comments);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/443165.html
