コントローラーの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 のルーティングメカニズムをよく理解していないため、説明を非常に詳しく説明してください...