私は、複数のビューを提供できるコントローラアクションメソッドがあります。これらのビューはXSLTによって生成されます。Asp.Net MVCのルーティングと複数のビュー
ここでは、ビューにはイメージがあり(数百個ずつ)、それぞれのビューには参照するイメージのある独自のフォルダが必要です。これはどのように機能しますか?
ソースXMLのイメージに単純な相対パス( "images/image.svg")のhrefがある場合、このパスをアプリケーションのビューで解決するにはどうすればよいですか?
イメージフォルダをビューと同じフォルダに置いてそこに相対パスを使用することは簡単ですが、動作から複数のビューを提供しているため動作しません。ここでは、ルーティングは次のとおりです。
routes.MapRoute(
"Parameter",
"{controller}/{action}/{lang}/{prod}",
new { controller = "Manuals", action = "Product", lang = "en-US", prod = "sample" }
);
私はのimg src属性の相対パスを使用してみてくださいあれば、それは「/Manuals/Product/en-US/images/image.svg」のようなものに解決
実際、ビューに相対的に置くと、画像は "/Views/Manuals/en/US/images/image.svg"に配置されます。
このように、相対的な画像パスを持つ方法はありませんAsp.Net MVCでこれは?またはMVCルーティングを誤解していますか?
public class MvcApplication : HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
MapRoute(routes, "", "Home", "Index");
/* other routes */
MapRoute(routes, "{*url}", "Documentation", "Render");
}
}
今すぐ一致していない任意のルートがDocumentationController
に渡されます。
ありがとう、でも私は私はあなたを正しく理解しているかどうかわからない...私は画像をダウンロード可能にしたくない。しかし、私が相対パスを使用すると、上で説明したように動作しません。 – Anders
恐らくダウンロードは間違った "言葉遣い"です。 Downloadの更新版を参照してください。 ContentCompositionヘッダーをインラインに設定すると、ブラウザーはイメージをダウンロードするのではなく表示します。あなたは、URLから実際のパス名などを把握するためにいくつかの作業をしなければなりません。私はそれを明確にすることを望む。 – bloudraak