2012-03-08 3 views
1

私は、XSLTを通じてアプリケーションルートからの相対的なイメージパス(src属性内)を作成しようとしています。XSLTを使用してAsp.Net MVC 3でサーバールートの相対イメージパスを作成しますか?

私はsrc属性でこれをしたい:

<img src="@Url.Content("~/Content/images/image.svg")" /> 

そして、私はビューファイルに手動で挿入すると、それが正常に動作します。しかし、XSLTでファイルを作成する必要があります。なぜなら、XMLから数百ものファイルが作成されているからです。しかし、XSLTでは引用符を挿入することはできません。#34でエスケープします。

これを行う方法はありますか?これを使わないでアプリケーションのルートを参照して、XSLTでこのパスを自動的に取得する方法はありますか?私が原因によるコンテンツの構造に、いずれかの相対パスを使用することができない

は、一方のコントローラのアクションは... IDに基づいて特定のフォルダ構造に見られる異なるビューの多くを提供することができる必要がある

EDIT:

は実は、今、私はちょうど

<img src="/Content/images/image.svg" /> 

を試してみましたが、それがうまく働きました!ブラウザの画像パスを調べると、アプリケーションのルートがsrcの文字列に連結されます。だから皆が@ Url.Content()を使用するように勧めているようです。

EDIT:

明確にするために、問題は、ネストされた引用符で、XSLT内の属性にこれを得ています。私はXMLで許可されていないので、これは不可能だと思いますが、誰かがそれを考えることができれば回避策が必要です。

答えて

2

使用

<img src='@Url.Content("~/Content/images/image.svg")' /> 
+0

申し訳ありませんが、私はそれを行うだろうかわからない...まず第一に、src属性がによって生成されます。それ自体Url.Content()の周りに二重引用符を生成します。また、(手作業で)逆にしてみましたが、コンパイラは "文字リテラルの文字数が多すぎます"と言って、それをcharと見なします。それがうまくいっても、私はXSLT変換で一重引用符を出力するのと同じ問題が残っていると思います... – Anders

+0

@AndersSvensson 1.「」は正しい形式のXML文書です完了)。 2. AVTを使用する - つまり、 ''と書いてください。ここで変数 '$ yourUrl'には' xsl:attribute'で指定している文字列が入ります。この解決策を理解するときに*問題*はありません。 –

+0

多分私が不明であったかどうかは分かりません。問題は、ビューファイルで構文が機能しないということではありません。問題はXSLTを介してこの値を生成することです。 – Anders

関連する問題