0

FilesController に次のコントローラー メソッドがあります。

public ActionResult Download(int id, string filename)
{
    var file = _filesRepository.GetFile(id);

    // Write it back to the client
    Response.ContentType = file.FileMimeType;
    Response.AddHeader("content-disposition", "attachment; filename=" + file.FileName);
    Response.BinaryWrite(file.FileData);

    return new EmptyResult();
}

これは、に移動すると機能します

/ファイル/ダウンロード/123?filename=myimage.png

しかし、私がナビゲートすればうまくいくと思います

/ファイル/ダウンロード/123/myimage.png

このためのカスタム ルートを作成する必要があることはわかっていますが、私が試したすべてが機能していません。FilesController と Download メソッドに対してのみ 2 つのパラメーターを受け入れるようにしたいと思います。それは可能ですか?

4

1 に答える 1

4

はい、新しいルートを作成すれば、これは非常に簡単です。Global.asax.csファイルのデフォルト ルートの前に、次のルートを追加します。

routes.MapRoute(
  "FileDownload", // Route name
  "Files/Download/{id}/{filename}", // URL with parameters
  new { 
    controller = "Files", 
    action = "Download", 
    id = UrlParameter.Optional, 
    filename = UrlParameter.Optional 
  } // Parameter defaults
);

次に、コントローラーアクションは、現在定義されているとおりに機能するはずです。

于 2012-04-25T00:31:30.303 に答える