我已经写一个简单的扩展方法,用于HtmlHelper类等lambda表达式
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表达式值表达式的身体像下图的样子:
但对于字符串,它像
我想转换方法是表达式返回integar值导致空字符串作为表达式文本返回。我怎样才能解决这个问题?我只需要原始表达文本,即Id为Convert(x.id)
,Name为x.Name
;无论它在后端如何处理它都无关紧要。
你的所有表情都会变得简单还是会嵌套?即你是否总是期待x => x.Foo? –
是的我只是期待简单的表达 –
挂上然后我会挖出我使用的功能 –