在我的剃刀视图中,使用@ Html.ActionLink显示超链接,显示的文本是硬编码的(在本例中为“Brand”)。视图的模型是@model IEnumerable
Exisitng View
@Html.ActionLink("Brand", "Index", new { sortOrder = ViewBag.BrandSortParm })
而不是硬编码文本,想使用@ Html.DisplayNameFor作为@ Html.ActionLink中的第一个参数,如下所述,这给出了编译错误
@Html.ActionLink(@Html.DisplayNameFor(model => model.BRAND_NAME), "Index", new { sortOrder = ViewBag.BrandSortParm })
请告诉我,怎么做。
答案 0 :(得分:26)
您需要一个字符串,因此请将其设为ToHtmlString()
@Html.ActionLink(Html.DisplayNameFor(model => model.BRAND_NAME).ToHtmlString(), "Index", new { sortOrder = ViewBag.BrandSortParm })
答案 1 :(得分:0)
您可以创建帮助程序类:
public static class ExtensionMethods
{
public static string DisplayName<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression<TModel, TValue>(expression, html.ViewData);
return metadata.DisplayName;
}
}
在视图中添加对您的类的引用,然后使用它:
@Html.ActionLink(Html.DisplayName(model=> model.BRAND_NAME), "Index", new { sortOrder = ViewBag.BrandSortParm })