我有一个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提供了一种更安全的方法来处理该问题。