资源文件中的@ActionLink()?

时间:2012-01-27 00:57:56

标签: asp.net-mvc-3

我想包括     @ 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

在我看来。有没有办法让剃须刀标签正确阅读?

1 个答案:

答案 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)