Szy*_*bki 4 c# razor asp.net-core-mvc asp.net-core
我有一个 .NET Core 2.1 MVC 应用程序。
我有一个看起来像这样的家庭控制器:
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult CountView(MyModel model)
{
...
return PartialView(model);
}
}
Run Code Online (Sandbox Code Playgroud)
在索引视图中,我想显示一个名为CountView.
但是当我在 Index.cshtml 中使用以下方法时:
@await Html.PartialAsync("CountView", Model)
Run Code Online (Sandbox Code Playgroud)
视图按照我的意愿显示,但控制器中的方法永远不会被调用,因此局部视图没有获得它需要的数据,而这些数据旨在由控制器方法获取。
为什么呢?
我怎样才能让它按预期工作?
@await Html.PartialAsync("CountView", Model)
Run Code Online (Sandbox Code Playgroud)
呈现局部视图,它不会为此调用任何控制器。在 ASP.NET Core 中执行此操作的正确方法是创建一个View Component。
至于实现,这里是从之前链接的官方文档修改的一个简单的:
ViewComponents在项目根目录创建文件夹public class CounterViewComponent: ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync(MyModel model)
{
// magic here
return View(model);
}
}
Run Code Online (Sandbox Code Playgroud)
@await Component.InvokeAsync("Counter", new { model = Model })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
968 次 |
| 最近记录: |