@ActionLink () в файле ресурсов? - PullRequest
1 голос
/ 27 января 2012

Я хотел бы включить команды @ 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 Ответ

4 голосов
/ 27 января 2012

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

Лучше было бы использовать string.Format.

Сохранить ресурс как:

<div>Click here to {0}</div>

А затем в представлении (я предполагаю, что вы используете бритву):

@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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...