在派生的RazorPage中获取View Component的渲染结果

时间:2017-04-27 19:40:56

标签: c# razor asp.net-core-viewcomponent

我需要从派生的RazorPage中获取视图组件的渲染结果。在 .cshtml 文件中,我可以

@await Component.InvokeAsync("MyButton", new MyModel())

现在,如果我有这个类,我的剃刀页面继承自:

public class MyRazorPage<TModel> : RazorPage<TModel>
{
    public async Task<HtmlString> GetViewComponentForExample()
    {
        // I cannot access the injected "Component" this way...
        string temp = await Component.InvokeAsync("MyButton", new MyModel()).Result.WriteTo();
        return new HtmlString(temp);
    }
}

在上面的方法GetViewComponentForExample()中,我无法使用注入的Component属性。我如何访问Component属性,或者如何完成上述操作?

1 个答案:

答案 0 :(得分:1)

你能做的就是这个(ASP .Net Core 2.0)

如果您有这样的组件:

[ViewComponent(Name = "Cart")]
public class CartViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync()
    {
         return View("");
    }
}

你可以在像这样的控制器中调用它

public class OtherController : Controller
{
    [HttpGet]
    public IActionResult Cart()
    {
        return ViewComponent("Cart");
    }
}

这将返回一个渲染的组件