gpt4 book ai didi

c# - HTML 帮助程序中的第二个 lambda 表达式引发 CS0411

转载 作者:行者123 更新时间:2023-11-30 21:31:10 24 4
gpt4 key购买 nike

我的许多 HTML 助手都将 lambda 表达式作为参数。从 MVC View 调用助手,lambda 表达式为助手提供来自 View 底层模型的字段之一。以下工作正常:

//Helper:
public static MvcHtmlString MyHelper<T, TValue>(this HtmlHelper<T> helper,
Expression<Func<T, TValue>> Parameter1
/*More parameters*/)

//View:
@Html.MyHelper(m => m.Field1 /*More parameters*/)

我想添加第二个参数,使模型中的第二个字段可供助手使用,大致如下:

//Helper:
public static MvcHtmlString MyHelper<T, TValue>(this HtmlHelper<T> helper,
Expression<Func<T, TValue>> Parameter1,
Expression<Func<T, TValue>> Parameter2
/*More parameters*/)

//View:
@Html.MyHelper(m => m.Field1,
m => m.Field2 /*More parameters*/)

View 生成 CS0411 编译错误(无法从用法中推断出方法“...”的类型参数。尝试明确指定类型参数。)。我了解错误消息的核心,但不知道如何将其映射到这种情况。

下面确实可以编译,但是我不知道如何获取Helper方法旁边的两个参数:

//View:
@Html.MyHelper(m => new
{
m.Field1,
m.Field2
} /*More parameters*/)

我应该如何将多个字段(列)从 View 的底层模型传输到 HTML 助手?

最佳答案

这两个字段很可能涉及两个不同的类型参数,即 Field1Field2,而您对这两个字段使用相同的 TValue

因此,当我们调用助手时,两个属性的类型可以不同。

在这种特殊情况下,您需要引入第三种类型参数。

所以试试:

public static MvcHtmlString MyHelper<T, TParam1,TParam2>(this HtmlHelper<T> helper,
Expression<Func<T, TParam1>> Parameter1,
Expression<Func<T, TParam2>> Parameter2
/*More parameters*/)

由于两个属性的类型可能不同,因此通用的 TValue 参数将不起作用。

关于c# - HTML 帮助程序中的第二个 lambda 表达式引发 CS0411,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53629834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com