我收到此错误:
模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。
这是我的代码(自定义 HTML 帮助程序,包装 DisplayFor 以便我可以选择模板):
public static string DisplayLocationTypeFor<TModel>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, LocationType>> expression, bool plural = false)
{
return plural ?
htmlHelper.DisplayFor(expression, "LocationTypePlural").ToHtmlString() :
htmlHelper.DisplayFor(expression).ToHtmlString();
}
当我这样使用它时,它可以工作:
@Html.DisplayLocationTypeFor(model => model.LocationType)
因为model
具有 的属性LocationType
。
但是当我在另一个自定义 HTML 助手中执行此操作时:
public static MvcHtmlString SearchPreferenceButtonForModel<TModel>(this HtmlHelper<TModel> htmlHelper)
{
// .. other code
foreach (var property in htmlHelper.ViewData.ModelMetadata.Properties)
{
if (property.PropertyName == "LocationType")
htmlHelper.DisplayLocationTypeFor(model => ((LocationType)Enum.ToObject(typeof(LocationType), property.Model)), true);
}
}
它错误。
我可以更改我的DisplayLocationTypeFor
助手来使用htmlHelper.Display
,但我不确定如何。
有任何想法吗?
我想要做的是,我有一种特定的方式来渲染LocationType
模型,我希望在整个站点上发生这种情况。在内部,模板使用资源文件,以及基于 URL 的其他一些智能。换句话说,有逻辑——我不想重复。
这样,我所有的视图/模板都会调用此模板作为呈现LocationType
.