私の ASP.NET MVC (3) アプリケーションでは、global.asax.cs で次のルートをセットアップしました。
routes.MapRoute(
"UniqueId",
"{uniqueId}",
new { controller = "Book", action = "DownloadBook" },
new { uniqueId = "[0-9a-zA-Z]{5}" }
);
DownloadFile アクション メソッドは次のとおりです。
public ActionResult DownloadBook(string uniqueId)
{
string path = Server.MapPath(String.Format("~/App_Data/Books/{0}/index.htm", uniqueId));
if (System.IO.File.Exists(path))
{
return File(path, "text/html");
}
return new EmptyResult();
}
このメソッドは、ルートで定義されている uniqueId に対応する名前を持つ /App_Data/Books ディレクトリのサブディレクトリから index.htm ファイルを正しく提供します。ただし、ブラウザは元の URL の場所 (例: http://localhost/3Yru3/ )でそれらを見つけようとするため、index.htm ファイル内の CSS および画像ファイルは見つかりません。
これについて私にできることはありますか?私はおそらく何かを見落としていますか?
編集(私の質問への回答にある私のコメントも参照してください):
本はHTMLファイルとして保存されます(MVCビューとしてではなく、CSSと画像を参照する問題が少なくなります)。理由:
1.それらはアップロードされますユーザーによってそのように。
2. index.htm ファイルとそれが使用するリソースを HTML5 appcache に保存して、オフラインで使用できるようにしたいと考えています。
EDIT 2私は自分の質問に対する解決策を見つけました。それについてどう思うか知りたいです。以下の回答で私自身の回答を参照してください。