我一直在做一些搜索,并对我找到的答案感到困惑。请原谅我缺乏技术术语。
我正在为Mvc写一个扩展程序。
public static MvcHtmlString FormTextBoxFor<TModel, TProperty>( this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
var attr = expression.GetAttribute<TModel, TProperty, HtmlPropertyAttribute>();
return helper.TextBoxFor(expression, new { placeholder = attr.Value });
}
public static T GetAttribute<TModel, TProperty, T>(this Expression<Func<TModel, TProperty>> expression)
where T : Attribute
{
var memberExpression = expression.Body as MemberExpression;
if (memberExpression == null)
throw new InvalidOperationException("Expression must be a member expression");
return memberExpression.Member.GetAttribute<T>();
}
我想知道的是,我是否可以快速将TModel和TProperty传递到我的第二个扩展名,因为该参数已包含该信息。
基本上我想转这个
expression.GetAttribute<TModel, TProperty, HtmlPropertyAttribute>();
进入这个
expression.GetAttribute<HtmlPropertyAttribute>();