1

翻訳可能なテキスト内にURLを作成するために、{0}プレースホルダーとして使用します。

だから私たちはします:

@string.Format(@translationHelper.GetTranslation("label-ClickToContinue"),
    @Html.ActionLink(
        @translationHelper.GetTranslation("text-here"),
               "Login",
               new { Model.UserName, Model.UniqueId }
    )
)

翻訳キー:

label-ClickToContinue = "Click {0} to continue"
text-here = "here"

ただし、これにより、エスケープされた文字列がソースに出力されます。<a href="/Login/Login?UserName=alberttest3&UniqueId=f3647fed-bab4-4575-bb5f-98ed27edff43">label-RequestNewOfficeWizard</a>

htmlタグではなく、URLが表示されるようにするにはどうすればよいですか?

4

2 に答える 2

1

次のように内部から出力を配置するだけstring.Format()Html.Raw()で簡単です。

@Html.Raw(string.Format(@translationHelper.GetTranslation("label-ClickToContinue"),
       @Html.ActionLink(
            @translationHelper.GetTranslation("text-here"),
            "Login",
            new { Model.UserName, Model.UniqueId }
       )
))

翻訳キー:

label-ClickToContinue = "Click {0} to continue"
text-here = "here"
于 2013-02-05T13:09:50.030 に答える
0

これは、ActionLinkヘルパーではサポートされていません。常にHTMLでテキストをエンコードします。テキストをエンコードしない独自のカスタムヘルパーを作成するか、単に次のようにすることができます。

<a href="@Url.Action(Login, new { UserName, Model.UniqueId })">
    @Html.Raw(translationHelper.GetTranslation("text-here"))
</a>

ちなみに、私がこのコードを投稿したので、それはとても醜いように見えます。先に進み、カスタムヘルパーを作成します。

public static class HtmlExtensions
{
    public static IHtmlString ActionLinkLocalized(
        this HtmlHelper html, 
        string translationText, 
        string actionName, 
        object routeValues
    )
    {
        var urlHelper = new UrlHelper(html.ViewContext.RequestContext);
        var anchor = new TagBuilder("a");
        anchor.Attributes["href"] = urlHelper.Action(actionName, routeValues);
        anchor.InnerHtml = TranslationHelper.GetTranslation(translationText);
        return new HtmlString(anchor.ToString());
    }
}

そしてあなたの見解では単純に:

@Html.ActionLinkLocalized("text-here", "Login", new { UserName, Model.UniqueId })
于 2013-02-05T12:28:39.313 に答える