1

シンプルな mvc3 razor Web アプリケーションを作成します。その上に、コントローラーと次のようなアクションがあります。

public class DownloadController : Controller
{       
    public ActionResult Index()
    {
        return File(@"\Files\MyFile.zip", "compress/zip");
    }

}

私の見解では、私はこれらを書きます:

    @Html.ActionLink("Downlod file","Index","Download")

    <a href="Files/MyFile.zip">download it</a>

最初の行はうまく機能し、インデックス アクションの結果を使用しますが、2 行目はインデックス アクションの結果を使用しません。Global.asax ファイルに書き込みを登録して、2 番目のリクエストをアクション結果のインデックスにマップしますが、機能しません

このコード:

routes.MapRoute("downloadroute",
                "Files/",
                 new { controller = "Download", action = "Index", id =    
                 UrlParameter.Optional }
                );

しかし、このルートは機能しません。何が問題なのですか?

その私の完全なグローバルファイルの内容

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
        );


        routes.MapRoute("downloadroute",
                        "Files/",
                     new { controller = "Download", action = "Index", 
                          id =UrlParameter.Optional }
                    );

皆さんありがとう

4

1 に答える 1

0

ルートが物理フォルダーと競合していますFiles。フォルダーの名前を変更してこの競合を解決するか、ルート URL を変更します (そのルートをデフォルト ルートの前に置きます)。

routes.MapRoute("downloadroute",
                "Downloads/",
                 new { controller = "Download", action = "Index" }
                );

相対パスではなく絶対パスを使用します。

<a href="@Url.Content("~/Downloads")">download it</a>
于 2012-12-15T14:45:51.030 に答える