我想包括 @ Html.ActionLink() 我的资源文件中的命令,但是当我调用资源时无法正确显示它们。基本上是这样的资源条目:
<div>Click here to @Html.ActionLink("contact us", null)</div>
显示为
Click here to @Html.ActionLink("contact us", null)
而不是
Click here to contact us
在我看来。有没有办法让剃须刀标签正确阅读?
答案 0 :(得分:4)
我认为你不能在资源文件中嵌入实际的代码,并期望视图引擎在渲染时调用它,它可能认为它只是一个字符串(它不应该只考虑那个)。
更好的方法是使用string.Format
。
将资源存储为:
<div>Click here to {0}</div>
然后在视图中(我猜你使用Razor):
@string.Format(Resources.Global.LinkHtmlFormat, Html.ActionLink("contact us", null))
如果您经常这样做,您还可以使用自定义HTML帮助程序“让它变甜”:
public static MvcHtmlString ResourceBasedActionLink(this HtmlHelper htmlHelper, string resourceName, string linkText, string actionName, string controllerName, object htmlAttributes)
{
var link = htmlhelper.ActionLink(linkText, actionName, controllerName, htmlAttributes);
return MvcHtmlString.Create(string.Format(resourceName, link)));
}
然后:
@Html.ResourceBasedActionLink(Resources.Global.LinkHtmlFormat, "Contact Us", "Contact", Controller", null)