2

コントローラーの1つのアクションメソッドが多くの異なる要求を処理し、製品情報を含むビューを提供できるAsp.Net MVC 3アプリケーションを作成しようとしています。製品はidパラメーターで指定されています。

その理由は、ユーザー (非プログラマー) が、アクション メソッドなどを追加することなく、新しいビューを簡単に追加できることを望んでいるためです。

各ビューには画像要素があり、src 属性は相対パスを参照します (例: "images/image_1.svg")

さて、これを行うために思いついた唯一の方法は、次のようなアクション メソッドを持つことでした。

//This takes a url with the format /Manuals/Product/id_sample, where the last is an id parameter
    public ActionResult Product(string id)
    {
        return View(id + "/" + id);           
    }

ビューへのパスを id で 2 回連結する理由は、製品ごとに個別のフォルダーを作成し、その中に独自の「images」フォルダーを作成できるようにするためです。

したがって、ビューは次のようなフォルダー構造になっています。

Views
     Manuals
            id_sample (this folder containing a view also called id_sample.cshtml)
                     images

これは、上記のようなパスが与えられた正しいビューを提供します。しかし、これはおそらく良い方法ではないことに気付きました。画像の相対パスでは機能しない URL が生成されます。

画像の「リソースが見つかりません」というメッセージが表示され、Web インスペクター ツールで、パス localhost/Manuals/Product/images/image_1.svg で画像を探していることがわかりますが、もちろん存在しません。 .

では、どうすればこれを行うことができ、ビュー内の画像に単純な相対パスを使用できるのでしょうか?

ビューは XML からの XSLT 変換を使用して作成されるため、すべての画像パスがそこに作成されることに注意してください。

これを行うのにまったく別の方法がある場合は、教えてください。私はこれについて間違った方法で行っていると感じています. また、解決策がルーティングの設定に関係している場合は、Asp.Net MVC のルーティングメカニズムをよく理解していないため、説明を非常に詳しく説明してください...

4

0 に答える 0