C# 如何通过Asp.Net核心控制器将参数传递给View组件

C# 如何通过Asp.Net核心控制器将参数传递给View组件,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我需要从控制器向视图组件传递一些值。我尝试了不同的方法,但它无法传播。如果我没有将任何内容传递给构造函数,那么一切正常,但是当我尝试将其传递给构造函数时,它甚至不会调用ViewComponent 控制器: [HttpGet] public IActionResult AddToCart(int id) { return ViewComponent("Cart", new {id}); } 视图组件: public class CartViewComponent :

我需要从控制器向视图组件传递一些值。我尝试了不同的方法,但它无法传播。如果我没有将任何内容传递给构造函数,那么一切正常,但是当我尝试将其传递给构造函数时,它甚至不会调用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();
    }
}
包括以下说明:

参数将被传递给InvokeAsync方法

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

包括以下说明:

参数将被传递给InvokeAsync方法

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


您可能希望创建一个具有int属性:id的类,并将其作为组件中的参数,而不仅仅是int。您的意思是按类型创建一个具有id属性的模型类吗?然后把它传递给视图组件?是的,这就是你现在传递的,但是vc只需要一个int。但是你试过只传递id而不是新的{id}?忘了我说的吧,请看下面的答案。您可能希望创建一个具有int属性:id的类,并将其作为组件中的参数,而不仅仅是int。您的意思是按类型创建一个具有id属性的模型类吗?然后把它传递给视图组件?是的,这就是你现在传递的,但是vc只需要一个int。但是你试过只传递id而不是新的{id}?忘记我说的,看看下面的答案
public class CartViewComponent : Microsoft.AspNetCore.Mvc.ViewComponent
{
    public IViewComponentResult Invoke(int id)
    {
        // Use id here.
        return View();
    }
}