asp.net core 1 rc2: 创建视图组件

asp.net core 1 rc2: Creating a view component

我将 aspnet 5 rc1 项目完全迁移到 aspnet core-rc2 中,并确保一切正常;但是,我似乎无法让我的 ViewComponents 在 rc2 中工作,而且我不确定如何以 "new" 方式实现它。

这是我现在的设置方式:

我在 .cshtml 文件中的某处:

 @Component.Invoke("AddActivity", Model.Id)

然后我将视图组件放在一个文件夹中

public class AddActivityViewComponent : ViewComponent
{
    public IViewComponentResult Invoke(int id)
    {
        ActivityViewModel model = new ActivityViewModel();
        model.IssueId = id;

        return View("ActivityModal", model);
    }
}

通常 return 共享文件夹中的 ActivityModal cshtml 但是 RC2 似乎要求 class 实现 IViewComponentHelper?

如果我做错了什么或者有更好的方法请告诉我

他们似乎改变了在 RC2 中调用组件的方式。现在 Invoke 方法只接受一个参数 "key/value pairs" 作为参数。
所以也许这样的事情会奏效:

@Component.Invoke("AddActivity", new { id = Model.Id})

更多信息here

注意:同步 API 已在 rc2 中删除。

你的代码可能是这样的:

public class AddActivityViewComponent : ViewComponent

{

    public IViewComponentResult InvokeAsync(int id)
    {
        ActivityViewModel model = new ActivityViewModel();
        model.IssueId = id;

        return View("ActivityModal", model);
    }
}

@Component.InvokeAsync<AddActivityViewComponent>(new { id = Model.Id})

@await Component.InvokeAsync<AddActivityViewComponent>(new { id = Model.Id})

艾萨克和安德烈说的是正确的。我只想补充: 需要匹配的参数名称。

在您的情况下,您需要使用 new { id = Model.Id} 调用调用,因为调用方法中的参数称为 "id"。