0

URLのコントローラー/ビューを持つことは可能ですか:

http://mydomain/SomeFolder/

そして、ファイルを入れるための同様の物理フォルダー

http://mydomain/SomeFolder/*.*

現在 URLhttp://mydomain/SomeFolder/は、web.config で許可されている場合にのみ物理フォルダーが参照されていることを返しますが、ビューhttp://mydomain/SomeFolder/*.*を返し、フォルダーに含まれるファイルを返すようにしたいと考えています。

4

2 に答える 2

1

はい、可能です。ファイル~/SomeFolder/foo.png~/Controllers/SomeFolderController. RouteExistingFilesプロパティを trueに設定するだけです。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

    routes.RouteExistingFiles = true;
}

/SomeFolderこれで、またはコントローラー/SomeFolder/IndexIndexアクションに移動するSomeFolderと、レンダリングされます。/SomeFolder/foo.png静的ファイルに移動すると、サービスが提供されます。

于 2013-07-15T08:59:42.570 に答える
0

これが私が見つけた解決策ですが、もっと簡単な方法を見つけたかったのです。

このソリューションでは、ファイルをの物理パスに配置することはhttp://mydomain/SomeFolder/できません。このフォルダーは物理的に存在できません。そうしないと、コントローラー/ビューが機能しません。しかし、それが達成することは、私の主な目標であっhttp://mydomain/SomeFolder/SomeFile.zipた と同じファイルを返すことです。http://mydomain/**Content**/SomeFolder/SomeFile.zip

http://mydomain/SomeFolder/との 2 つの異なるルートが必要です。http://mydomain/SomeFolder/anything/file/etc

        routes.MapRoute(
            "SomeFolder",
            "SomeFolder",
            new { controller = "SomeFolder", action = "Index" }
        );

        routes.MapRoute(
            "SomeFolderSub",
            "SomeFolder/{*any}",
            new { controller = "TryDownloadFile", action = "Index" }
        );

routes.RouteExistingFiles残っていfalseます。

次にSomeFolderController、SomeFolder のビューを返します。そして、代わりにTryDownloadFileControllerファイルが存在するかどうかを確認し、 それを返します。http://mydomain/Content/SomeFolder/http://mydomain/SomeFolder/

(ファイルが存在しない場合は、404 応答が返されるはずです。これは次のようになりますreturn this.HttpNotFound();)

于 2013-07-31T11:51:06.223 に答える