gpt4 book ai didi

c# - PartialView Action 正在调用自身

转载 作者:行者123 更新时间:2023-11-30 14:44:44 28 4
gpt4 key购买 nike

我有 MVC 应用程序,它用于从主视图 (ProductMaster) 将 ProductAreaGrid 列表显示为 PartialView,并且它将在局部 View 中将 CreateProductArea 作为 PartialView。我的 Gridview 部分操作重复调用,我不确定为什么它被重复调用。这段代码有没有循环引用?

我研究了谷歌并找到了以下链接,但也没有用。

Why does the PartialView keep calling itself?

下面是我的代码 MVC 代码。

ProductAreaGrid.cshml

@model IEnumerable<Brain.DAL.Entities.ProductArea>
@{
ViewBag.Title = "Product Area";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<p>
<a href="#" class="btn btn-success" data-target="#CreateProductArea" data-toggle="modal">
Add New
<i class="fa fa-plus"></i>
</a>
</p>
@Html.Partial("Partials/PA/CreateProductArea", null, new ViewDataDictionary() {})
<div class="table-responsive">
<table class="table table-bordered table-hover dataTable gray-table">
<thead>
<tr>
<th>Action</th>
<th>Name</th>
<th>Is Active</th>
</tr>
</thead>
<tbody>
@if (!Model.Any())
{
<tr>
<td colspan="3">There are no required support entries.</td>
</tr>
}
else
{
foreach (var item in Model)
{
<tr>
<td>
<a href="#" class="btn btn-xs btn-success" data-target="#EditReportLink-@item.Id" data-toggle="modal">Edit</a>
<a href="#" class="btn btn-xs btn-danger" data-target="#DeleteReportLink-@item.Id" data-toggle="modal">Deactivate</a>
@Html.Partial("Partials/PA/EditProductArea", item)
@Html.Partial("Partials/PA/De_ActivateProductArea", item.Id)
</td>
<td>
@Html.DisplayFor(model => item.Name)
</td>
<td>@Html.DisplayFor(model => item.IsActive)</td>
</tr>
}
}
</tbody>
</table>
</div>

ProductMastetIndex.cshtml

@{
ViewBag.Title = "Product Master";
}

@section Breadcrumb {
<ul class="breadcrumb">
<li>
<a href="@Url.Action("index", "home" )">Dashboard</a>
</li>
<li class="active">
<span>@ViewBag.Title </span>
</li>
</ul>
}
@section Scripts {
<script>

</script>
}

<div class="clearfix"></div>

@Html.Partial("ValidationSummary", ViewData.ModelState)
<div>
<br class="visible-sm visible-xs" />
<h3 class="tab-title">Product Area</h3>
<hr />
<div class="row">
<div class="col-lg-8">
@Html.Partial("AjaxGrid", Url.Action("PAGrid"), new ViewDataDictionary() { })
</div>
</div>
<hr class="seperate-line">
</div>
<div class="clearfix"></div>

ProductMasterController.cs

 public class ProductMasterController : BaseController
{
private CachedCollections _cachedCollections;
private ProjectHelper _projectHelper;
private IUsersService _usersServices;

[SCIAuthorize(RoleEnum.PMO)]
[HttpGet]
public ActionResult ProductMasterIndex()
{
try
{
return View();
}
catch (Exception ex)
{
LogError(ex);
return Json(new { Message = new ToastrMessage(null, (ex is BrainServiceException) ? ex.Message : AppGlobalMessages.UnexpectedErrorMessage, ToastrMessageTypeEnum.Error) });
}
}


#region Product Area

[SCIAuthorize(RoleEnum.PMO)]
public PartialViewResult PAGrid()
{
var collection = _db.GetProductAreas()
.AsNoTracking()
.ToList();
return PartialView("Partials/PA/PAGrid", collection);
}
}

一旦页面完全呈现,下面的方法就会重复调用。为什么会这样?

public PartialViewResult PAGrid()

最佳答案

I figure out the problem after removing Layout = "~/Views/Shared/_Layout.cshtml";

这是一个原因。 “布局”属性/指令在此处指定:

ProductAreaGrid.cshml

...
@{
...
Layout = "~/Views/Shared/_Layout.cshtml";
}

通常,最终页面/ View 以以下嵌套结构呈现:

  • 布局

    • 查看(引用布局)

      • 部分 View (不应引用布局)

最终页面/ View 应包含完整有效的 html 内容:开始/结束 html 标记(在 View 中或相关布局中定义)。

部分 View - 是一个 block /单元,不应带有自己的开始/结束 html 标记,但应提供整个 html 内容的一部分。

例如:

<!--Layout-->
<html>
...
<body>
<!--View-->
<!--PartialView-->
<!--PartialView-->
<!--View-->
</body>
</html>
<!--Layout-->

在您的场景中,最终布局可能按以下方式构建:

  • 布局(“~/Views/Shared/_Layout.cshtml”文件)

    • 查看(“ProductMastetIndex.cshtml”文件)

      • PartialView(“ProductAreaGrid.cshml”文件)

but i am not sure why its calling the partial view

在 PartialView 中分配“布局”属性似乎从布局级别开始递归地重新运行相同的渲染例程。

要解决此问题,请在“View”(“ProductMastetIndex.cshtml”)文件中使用“Layout”指令,而不是在 PartialView 中:

ProductAreaGrid.cshml:

@model IEnumerable<Brain.DAL.Entities.ProductArea>
@{
ViewBag.Title = "Product Area";
...
}

ProductMastetIndex.cshtml:

@{
ViewBag.Title = "Product Master";
Layout = "~/Views/Shared/_Layout.cshtml";
}

关于c# - PartialView Action 正在调用自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57823284/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com