所以我有这个:
public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, Expression<Func<TModel, ControlPermissionType>> mode)
{
MvcHtmlString value = null;
var modeIn = ModelMetadata.FromLambdaExpression(
mode, htmlHelper.ViewData
).Model;
switch ((ControlPermissionType)modeIn)
{
case ControlPermissionType.Read:
value = htmlHelper.TextBoxFor(expression, new { @readonly = "readonly" });
break;
case ControlPermissionType.Edit:
value = htmlHelper.TextBoxFor(expression);
break;
case ControlPermissionType.Deny:
value = new MvcHtmlString(string.Empty);
break;
}
return value;
}
这就是我所说的:
@Html.TextBoxFor(a => a.First().BirthDate, a => a.First().Mode)
但我想要的是:
@Html.TextBoxFor(a => a.First().BirthDate, a.Mode)
怎么做?
修改
甚至
@Html.TextBoxFor(a => a.First().BirthDate)
但以这种方式检查a
是否正在实施界面?
EDIT2:
答案 0 :(得分:1)
@Html.TextBoxFor(a => a.First().BirthDate, a => a.First().Mode)
需要方法签名:
public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, Expression<Func<TModel, ControlPermissionType>> mode)
@Html.TextBoxFor(a => a.First().BirthDate, a.Mode)
需要方法签名:
public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, ControlPermissionType mode)
@Html.TextBoxFor(a => a.First().BirthDate)
需要方法签名:
public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
但是在最后一种情况下,你会错过ControlPermissionType。
顺便说一下,如果你试图用@Html.TextBoxFor(a => a.First().BirthDate)
调用你的方法,编译器错误应该是自我解释需要哪种签名方法。