gpt4 book ai didi

c# - 为什么 PartialAsync 不调用相应的 Controller 方法?

转载 作者:太空宇宙 更新时间:2023-11-03 20:50:31 32 4
gpt4 key购买 nike

我有一个 .NET Core 2.1 MVC 应用程序。

我有一个如下所示的家庭 Controller :

public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}

public IActionResult CountView(MyModel model)
{
...
return PartialView(model);
}
}

在索引 View 中,我想显示一个名为 CountView 的局部 View 。

但是当我在 Index.cshtml 中使用以下方法时:

@await Html.PartialAsync("CountView", Model)

View 显示如我所愿,但 Controller 中的方法永远不会被调用,因此部分 View 无法获得它需要的数据,而这些数据本应由 Controller 方法获取。

为什么会这样?

我怎样才能让它按预期工作?

最佳答案

@await Html.PartialAsync("CountView", Model)

呈现局部 View ,它不会为此调用任何 Controller 。在 ASP.NET Core 中执行此操作的正确方法是创建一个 View Component .

至于实现,这里是根据之前链接的官方文档修改的简单实现:

  1. 在项目的根目录下创建一个 ViewComponents 文件夹
  2. 在其中,创建一个 ``CounterViewComponent` 类:
public class CounterViewComponent: ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync(MyModel model)
{
// magic here
return View(model);
}
}
  1. 在你的 View 中调用它:
@await Component.InvokeAsync("Counter", new { model = Model })

关于c# - 为什么 PartialAsync 不调用相应的 Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55838857/

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