呈现包含存储在资源文件中的 HTML 的显示名称
Rendering a display name containing HTML that's stored in Resource file
我需要渲染存在于资源文件中的 HTML link
[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."
我需要在视图上呈现它,以便 link 可以点击。 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 渲染它的建议,所以我遵循了 this here(以及其他一些)但是那个代码仅提取 属性 "MyPropertyName" 的名称,而不是资源文件中的字符串。
有什么想法吗?谢谢。
好吧,在最后一次愚蠢的尝试之后,这突然决定起作用了。对于以后遇到此类问题的任何人:
该应用程序有一个 StronglyTypedResourceBuilder
class,其中包含我需要的所有数据。所以下面的工作没有问题:
@using StringResources = Namespace.Resources.StringResources
...
@Html.CheckBoxFor(m => m.MyPropertyName)
@Html.Raw(@StringRes.MyPropertyName)
...
真是浪费了一个上午。
我需要渲染存在于资源文件中的 HTML link
[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."
我需要在视图上呈现它,以便 link 可以点击。 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 渲染它的建议,所以我遵循了 this here(以及其他一些)但是那个代码仅提取 属性 "MyPropertyName" 的名称,而不是资源文件中的字符串。
有什么想法吗?谢谢。
好吧,在最后一次愚蠢的尝试之后,这突然决定起作用了。对于以后遇到此类问题的任何人:
该应用程序有一个 StronglyTypedResourceBuilder
class,其中包含我需要的所有数据。所以下面的工作没有问题:
@using StringResources = Namespace.Resources.StringResources
...
@Html.CheckBoxFor(m => m.MyPropertyName)
@Html.Raw(@StringRes.MyPropertyName)
...
真是浪费了一个上午。