我有一个ViewComponent,需要将4个以上的值传递给ViewComponent,但是当我尝试时,它给了我下面的错误。


  错误CS0746无效的匿名类型成员声明符。必须使用成员分配,简单名称或成员访问来声明匿名类型成员。


代码看起来像这样。

public async Task<IViewComponentResult> InvokeAsync(
    string A, string B, string C, string D, string E)
{

}


调用ViewComponent

@await Component.InvokeAsync(
    "ViewComponent2",
    new { A = Model.A, filter = "B", C = Model.C, Model.D, "2" })


我将使用TagHelper传递数据,并且有任何方法可以将模型传递给ViewComponent,但我尝试过,但是参数始终为null。

最佳答案

编译器错误本身与ViewComponents或4个参数无关:问题是匿名类型中的"2",它是无效的。您要创建的匿名类型具有以下前四个参数:


A = Model.A
filter = "B"
C = Model.C
D = Model.D-在此处隐式在匿名类型上创建名称D


但是,下一个参数是"2“,没有名称,也没有隐式创建属性。如果要编译该最后一个参数,则需要为其命名,例如:

new { A = Model.A, filter = "B", C = Model.C, Model.D, E = "2" }


编辑

我应该提到,您将需要匿名类型的属性的名称与您在InvokeAsync函数中声明的属性匹配,这意味着您需要将filter更改为B去工作。但是,托德·斯克尔顿(Todd Skelton)的answer提供了一种更安全的方法来处理该问题。

09-25 15:17