我需要呈现资源文件中存在的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."
我需要在View上渲染它,以便链接可以点击。尽管我尝试了什么方法,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
类,包含我需要的所有数据。所以下面的工作没有问题:
@using StringResources = Namespace.Resources.StringResources
...
@Html.CheckBoxFor(m => m.MyPropertyName)
@Html.Raw(@StringRes.MyPropertyName)
...
多么浪费一个早晨。