我收到此错误:
模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。
这是我的代码(自定义 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
.
但是当我这样做时another自定义 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
.