【发布时间】:2013-01-30 13:37:36
【问题描述】:
我正在尝试制作自己的扩展方法,该方法可以采用任意数量的 lambda 表达式,但每当我添加多个表达式时,它似乎都会窒息。
方法如下:
public static MvcHtmlString _RouteButton<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, string label, string controller, string action, params Expression<Func<TModel, TProperty>>[] parameters)
{
var test = parameters;
return MvcHtmlString.Empty;
}
这是成功调用它的标记:
<%: Html._RouteButton("details", "Health", "SystemDetails", m=>m.Id)%>
这是错误的标记:
<%: Html._RouteButton("details", "Health", "SystemDetails", m=>m.Id, m=>m.Status)%>
这是错误:
方法的类型参数不能从用法中推断出来。尝试 明确指定类型参数
感谢任何帮助。谢谢!
【问题讨论】:
-
Id和Status有哪些类型?
-
您是否可以使用多个 Lambda 来获取多个参数,而不是只使用一个来返回具有必要字段的新匿名对象?
<%: Html._RouteButton("details", "Health", "SystemDetails", m=> new { id= m.Id, status = m.Status})%> -
@ShaneA 你不能这样做,因为如果涉及匿名类型,你就不能为参数定义类型。
-
Shane,我实际上有一个覆盖,但为了简单起见,我想传递 lambda 表达式。
标签: c# asp.net-mvc linq lambda