我完全将aspnet 5 rc1项目迁移到aspnet core-rc2中,确保一切都和以前一样;但是,我似乎无法让我的ViewComponents在rc2中工作,而且我不确定如何在" new"中实现它。方式。
以下是我现在设置的方式:
在.cshtml文件的某个地方,我有:
@Component.Invoke("AddActivity", Model.Id)
然后我在文件夹
中有viewcomponentpublic class AddActivityViewComponent : ViewComponent
{
public IViewComponentResult Invoke(int id)
{
ActivityViewModel model = new ActivityViewModel();
model.IssueId = id;
return View("ActivityModal", model);
}
}
并且通常会在共享文件夹中返回ActivityModal cshtml,但RC2似乎要求实现IViewComponentHelper的类?
如果我做错了事或者有更好的方法,请告诉我
答案 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;。