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

时间:2016-05-28 08:20:06

标签: asp.net asp.net-core-mvc asp.net-core-1.0

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

以下是我现在设置的方式:

在.cshtml文件的某个地方,我有:

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

然后我在文件夹

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

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

并且通常会在共享文件夹中返回ActivityModal cshtml,但RC2似乎要求实现IViewComponentHelper的类?

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

3 个答案:

答案 0 :(得分:6)

注意:已在rc2中删除了Sync API。

您的代码可能是这样的:

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})

答案 1 :(得分:0)

似乎他们改变了在RC2中调用组件的方式。现在,Invoke方法只接受一个参数&#34;键/值对&#34;作为参数。
所以也许这样的事情会起作用:

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

更多信息here

答案 2 :(得分:0)

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

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