13

在我的剃刀视图中,我使用@Html.ActionLink 来显示超链接,并且显示的文本是硬编码的(在这种情况下为“品牌”)。视图的模型是 @model IEnumerable

现有视图

@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 })

请让我知道,如何做到这一点。

4

2 回答 2

30

你需要一个字符串,所以让它ToHtmlString()

@Html.ActionLink(Html.DisplayNameFor(model => model.BRAND_NAME).ToHtmlString(), "Index", new { sortOrder = ViewBag.BrandSortParm })
于 2013-11-06T11:42:35.037 回答
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 })
于 2015-08-23T12:25:35.367 回答