【发布时间】:2011-09-16 14:04:21
【问题描述】:
我已经为 HtmlHelper 类写了一个简单的扩展方法,比如
public static string GetExpressionNames<TModel>(this HtmlHelper<TModel> helper,params Expression<Func<TModel,object>>[] args) where TModel:class
{
string returnStr = string.Empty;
int i = 0;
foreach (var x in args)
{
returnStr += (++i).ToString() + ExpressionHelper.GetExpressionText(x) + "<br/>";
}
return returnStr;
}
目前,它只接受在模型属性(返回对象)上定义的 LambdaExpressions 数组,并将它们的表达式文本添加到一个字符串中,然后由该函数返回该字符串。问题是,对于字符串类型属性,它工作正常,但对于 int 属性,它返回空字符串作为表达式文本。原因是对于返回 int 值的表达式,表达式的主体如下图所示:
但对于字符串,它就像
我认为 convert 方法是返回整数值的表达式,导致空字符串作为表达式文本返回。我怎样才能解决这个问题?我只需要原始表达式文本,即 Convert(x.id) 的 ID 和 x.Name 的名称;它在后端如何处理它并不重要。
【问题讨论】:
-
所有表达式都是简单的还是嵌套的?即你总是期待 x=>x.Foo 吗?
-
是的,我只期待简单的表达
-
等一下,我会挖掘出我使用的功能
标签: c# asp.net-mvc asp.net-mvc-3 c#-4.0 lambda