Mvc Core 2.0视图组件

时间:2017-06-13 14:35:27

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

我正在使用mvc core 2.0项目,但是视图组件无法正常工作。

我收到此错误

  

InvalidOperationException:无法为视图组件找到“Invoke”或“InvokeAsync”方法

[ViewComponent(Name = "Footer")]
public class FooterViewComponent : ViewComponent
{
    public ViewViewComponentResult Invoke()
    {      
        var model = new FooterModel();

        return View(model);
    }
}

2 个答案:

答案 0 :(得分:1)

将Invoke的返回类型更改为IViewComponentResult

[ViewComponent(Name = "Footer")]
public class FooterViewComponent : ViewComponent
{
    public IViewComponentResult Invoke()
    {
        var model = new FooterModel();

        return View(model);
    }
}

并在视图中使用它:@await Component.InvokeAsync(typeof(FooterViewComponent))

我正在使用ASP.Net Core 2.0,视图组件对我来说很好。

答案 1 :(得分:0)

在我的实现中,视图组件的Invoke方法必须是Async方法,并且应该返回Task作为输出。这就是它对我有用的方式:

我的视图组件:

public class XTestEntityViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync(int id)
    {
       // Put your stuff here . . . 
    }
}

您可以从应用程序的任何视图访问它,如下所示:

@await Component.InvokeAsync("XTestEntity", new { id = 4 })

我希望这会有所帮助