Визуализация отображаемого имени, содержащего HTML, который хранится в файле ресурсов - PullRequest
2 голосов
/ 14 марта 2019

Мне нужно отобразить ссылку HTML, которая существует внутри файла ресурса

[Display(Name = "MyPropertyName" ResourceType = typeof(Res.Props))]
public bool MyProperty{ get; set; }

Ресурс MyPropertyName имеет некоторый HTML:

"Click <a href="bla.com">here</a> to find out more."

Мне нужно отобразить это в представлении, чтобы ссылка была кликабельной. HTML никогда не будет отображаться, несмотря на то, какой метод я пробую, некоторые попытки (не точный синтаксис, но вы понимаете суть) будут отображать необработанный HTML, а некоторые вообще ничего не отображают.

var htmlLabel = Html.LabelFor(m => m."MyPropertyName" ).ToString()
Html.Raw(htmlLabel)

Html.Raw(Html.LabelFor(m => m."MyPropertyName" ).ToString())
Html.Raw(Html.LabelFor(m => m."MyPropertyName")

MvcHtmlString.Create(htmlLabel);
Html.Raw(MvcHtmlString.Create(htmlLabel))

и т.д.

Я нашел предложение получить информацию об атрибутах на контроллере и передать ее через ViewBag, а затем отобразить ее с помощью HTML.Raw, так что я следовал здесь (и несколько других), но этот код извлекает только имя свойства «MyPropertyName», а не строку из файла ресурсов.

Есть идеи? Спасибо.

1 Ответ

2 голосов
/ 14 марта 2019

ну теперь вдруг решил сработать после последней глупой попытки. Для тех, кто сталкивается с подобными проблемами в будущем:

Приложение имеет класс StronglyTypedResourceBuilder, который содержит все необходимые мне данные. Так что без проблем работает следующее:

@using StringResources = Namespace.Resources.StringResources

...

@Html.CheckBoxFor(m => m.MyPropertyName)
@Html.Raw(@StringRes.MyPropertyName)

...

Какая трата утра.

...