首页 > 解决方案 > 如何通过 Asp .Net Core 控制器将参数传递给视图组件

问题描述

我需要从控制器向视图组件传递一些值。我尝试了不同的方法,但它不传输。如果我没有将任何东西传递给构造函数,那么一切正常,但是当我尝试将它传递给构造函数时,它甚至不会调用 ViewComponent

控制器:

[HttpGet]
public IActionResult AddToCart(int id)
{
    return ViewComponent("Cart", new {id});
}

查看组件:

public class CartViewComponent : Microsoft.AspNetCore.Mvc.ViewComponent
{
    int gId;

    public CartViewComponent(int id)
    {
        gId = id;
    }

    public IViewComponentResult Invoke()
    {
        return View();
    }
}

标签: c#asp.net-coreasp.net-core-mvc

解决方案


调用视图组件包括以下解释:

参数将传递给InvokeAsync方法。

这意味着您应该将id参数从构造函数移动到Invoke方法:

public class CartViewComponent : Microsoft.AspNetCore.Mvc.ViewComponent
{
    public IViewComponentResult Invoke(int id)
    {
        // Use id here.
        return View();
    }
}

推荐阅读