私は、ASP.NET MVC3のグローバル化されたWebアプリケーションを開発中です。プロジェクトはI18Nのリソースファイルが含まれていると私は、通常のように私のカミソリビュー内のリソースにアクセスする...ローカライズされた文字列の書式を設定して、文の1語をリンクにするにはどうすればよいですか?
@I18N.MyResourceString
私はまだエレガントな解決策を把握することができていないトリッキーな状況があります。私は「寄付するにはここをクリック」という文章をローカライズできる必要があります。 「ここ」という言葉は私たちの寄付システムへのリンクになるはずです。サイト内
ほとんどのリンクは、この寄付のリンクは外部で
@Html.ActionLink("Some link text", "MyAction", "MyController")
...私は単に書くのリンクを作成するように内部にあります。私は今のところ(作業されていない)持っていることは... I18N.ClickHereToDonate
リソースのテキストが"Click {0} to donate."
ある
@String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\">" + I18N.Here + "</a>")
です。私は画面に表示されるもの
...
Click <a href="http://paypal.com">here</a> to donate.
さらに、私はまた、「」タグに「タイトル」属性を追加したいと思います。私はそれをしようとすると、それも醜います...
@String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\" title=\"" + I18N.PayPal + "\">" + I18N.Here + "</a>")
は、このようなハック方法で一緒に物事を連結せずに埋め込まれたタグを持つ複雑な文字列を形成するためのより良い方法がなければなりません。それはうまく動作しません(意図したマークアップはエンコードされています)が、IDEのサポート/統合/リファクタリング機能を失うことになる私のひげ剃りテンプレートの文字列リテラル内にHTMLを作成します。
ローカライズされた文字列にマークアップを挿入するにはどうすればよいですか?私はすでに醜いマークアップにこれを追加しましたので、アダムTuliperが彼の答えで@Html.Raw
ヘルパーメソッドを述べた
UPDATE
...
@Html.Raw(String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\" title=\"" + I18N.PayPal + "\">" + I18N.Here + "</a>"))
はこの少なくともは私に、クリック可能なリンクを得ました出力されたマークアップに追加します。
をクリックしてください。hereを寄付してください。
これはまだまだエレガントなソリューションですが、私はまだこれを行うより良い方法を探しています。
彼は上記の文字列にプレースホルダが含まれているため、string.formatが必要です。 {0}など –
これは私が今のところリゾートにしなければならなかったものですが、望ましい結果ではありません。ビジネスは、文全体ではなく、「ここ」という言葉だけをリンクにしたいと考えています。あなたの答えはまさに私がメニュー項目リンクのためにやっていることです。 –
私は@ Html.Rawを使用するために上記を編集しました - アダムはそれを以下で使用しました。 2つのString.Formatsを使用すると、リソース文字列などを変更することなく、必要な結果が得られます。 –