Ответ 1
Вам нужна строка, поэтому сделайте ее ToHtmlString()
@Html.ActionLink(Html.DisplayNameFor(model => model.BRAND_NAME).ToHtmlString(), "Index", new { sortOrder = ViewBag.BrandSortParm })
В моем представлении бритвы я использую @Html.ActionLink для отображения гиперссылки, а текст, который отображается на экране, жестко закодирован (в этом случае "Бренд" ). модель для представления - @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 })
Пожалуйста, дайте мне знать, как это сделать.
Вам нужна строка, поэтому сделайте ее ToHtmlString()
@Html.ActionLink(Html.DisplayNameFor(model => model.BRAND_NAME).ToHtmlString(), "Index", new { sortOrder = ViewBag.BrandSortParm })
Вы можете создать вспомогательный класс:
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 })